zoukankan      html  css  js  c++  java
  • [转]android使用全局变量的两种方法

    本文转自:http://blog.csdn.net/feiyangxiaomi/article/details/9966215

    在我们使用android编写程序的时候,少不了想利用全局变量,但是面向对象语言和过程语言区别很大,不再是include就可以的。这里我写了使用全局变量的两种方法:

     

    1.使用application来保存全局变                                                             

    这里没有太多理论性的东西,无非就是一些实际操作。

    1.1定义Data类继承Application Data.class

    1. import android.app.Application; 
    2.  
    3. publicclass Data extends Application{ 
    4.     private String b; 
    5.      
    6.     public String getB(){ 
    7.         returnthis.b; 
    8.     } 
    9.     publicvoid setB(String c){ 
    10.         this.b= c; 
    11.     } 
    12.     @Override 
    13.     publicvoid onCreate(){ 
    14.         b = "hello"
    15.         super.onCreate(); 
    16.     } 
    import android.app.Application;
    
    public class Data extends Application{
    	private String b;
    	
    	public String getB(){
    		return this.b;
    	}
    	public void setB(String c){
    		this.b= c;
    	}
    	@Override
    	public void onCreate(){
    		b = "hello";
    		super.onCreate();
    	}
    }

    1.2在manifest.xml中声明application

    1. android:name="com.animator1.Data"
    android:name="com.animator1.Data" >

    1.3创建两个Activity

    MainActivity.class

    1. publicclass MainActivity extends Activity { 
    2.  
    3.     @Override 
    4.     protectedvoid onCreate(Bundle savedInstanceState) { 
    5.         super.onCreate(savedInstanceState); 
    6.         setContentView(R.layout.main); 
    7.         Button btn = (Button) this.findViewById(R.id.button1); 
    8.         final TextView txtview = (TextView) this.findViewById(R.id.main); 
    9.         final Data app = (Data)getApplication(); 
    10.         txtview.setText(app.getB()); 
    11.         btn.setOnClickListener(new View.OnClickListener() { 
    12.              
    13.             @Override 
    14.             publicvoid onClick(View v) { 
    15.                 // TODO Auto-generated method stub 
    16.                 app.setB("no_hello"); 
    17.                 txtview.setText(app.getB()); 
    18.                 Intent intent = new Intent(MainActivity.this, secondActivity.class); 
    19.                 startActivity(intent); 
    20.             } 
    21.         }); 
    22.     } 
    public class MainActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		Button btn = (Button) this.findViewById(R.id.button1);
    		final TextView txtview = (TextView) this.findViewById(R.id.main);
    		final Data app = (Data)getApplication();
    		txtview.setText(app.getB());
    		btn.setOnClickListener(new View.OnClickListener() {
    			
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				app.setB("no_hello");
    				txtview.setText(app.getB());
    				Intent intent = new Intent(MainActivity.this, secondActivity.class);
    				startActivity(intent);
    			}
    		});
    	}
    }

    secondActivity.class

    1. publicclass secondActivity extends Activity{ 
    2.     @Override 
    3.     protectedvoid onCreate(Bundle savedInstanceState){ 
    4.         super.onCreate(savedInstanceState); 
    5.         setContentView(R.layout.second); 
    6.         Button btn = (Button) this.findViewById(R.id.button2); 
    7.         final TextView txtview = (TextView) this.findViewById(R.id.second); 
    8.         final Data app = (Data)getApplication(); 
    9.         txtview.setText(app.getB()); 
    10.         btn.setOnClickListener(new View.OnClickListener() { 
    11.              
    12.             @Override 
    13.             publicvoid onClick(View v) { 
    14.                 // TODO Auto-generated method stub               
    15.                 app.setB("hello"); 
    16.                 txtview.setText(app.getB()); 
    17.                 Intent intent = new Intent(secondActivity.this, MainActivity.class); 
    18.                 startActivity(intent); 
    19.             } 
    20.         }); 
    21.     } 
    public class secondActivity extends Activity{
    	@Override
    	protected void onCreate(Bundle savedInstanceState){
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.second);
    		Button btn = (Button) this.findViewById(R.id.button2);
    		final TextView txtview = (TextView) this.findViewById(R.id.second);
    		final Data app = (Data)getApplication();
    		txtview.setText(app.getB());
    		btn.setOnClickListener(new View.OnClickListener() {
    			
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub				
    				app.setB("hello");
    				txtview.setText(app.getB());
    				Intent intent = new Intent(secondActivity.this, MainActivity.class);
    				startActivity(intent);
    			}
    		});
    	}
    }

    1.4运行程序   

    说明:程序首先进入MainActivity.class中,获取Data中变量b的值,显示图1所示的界面hello,单击button后app.setB("no_hello"), 修改变量b的值。

               跳转到secondActivity.class,获取Data中变量b的值,显示图2所示的界面no_hello,单击button后app.setB("hello"), 修改变量b的值。

               跳转回MainActivity.class……  循环

    2.使用普通的类Data.class来保存全局变                                                             

    方法和上面差不多。

    1.1 定义Data.class

    1. publicclass Data{ 
    2.     privatestatic String a ="feiyangxiaomi"
    3.      
    4.     publicstatic String getA() { 
    5.         return a; 
    6.     } 
    7.      
    8.     publicstaticvoid setA(String a) { 
    9.         Data.a = a; 
    10.     } 
    public class Data{
    	private static String a ="feiyangxiaomi";
    	
    	public static String getA() {
    		return a;
    	}
    	
    	public static void setA(String a) {
    		Data.a = a;
    	}
    }
    

    1.2创建两个Activity

    MainActivity.class

    1. publicclass MainActivity extends Activity { 
    2.  
    3.     @Override 
    4.     protectedvoid onCreate(Bundle savedInstanceState) { 
    5.         super.onCreate(savedInstanceState); 
    6.         setContentView(R.layout.main); 
    7.         Button btn = (Button) this.findViewById(R.id.button1); 
    8.         final TextView txtview = (TextView) this.findViewById(R.id.main); 
    9.         txtview.setText(Data.getA()); 
    10.         btn.setOnClickListener(new View.OnClickListener() { 
    11.              
    12.             @Override 
    13.             publicvoid onClick(View v) { 
    14.                 // TODO Auto-generated method stub 
    15.                 Data.setA("no_feiyangxiaomi"); 
    16.                 Intent intent = new Intent(MainActivity.this, secondActivity.class); 
    17.                 startActivity(intent); 
    18.             } 
    19.         }); 
    20.     } 
    public class MainActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		Button btn = (Button) this.findViewById(R.id.button1);
    		final TextView txtview = (TextView) this.findViewById(R.id.main);
    		txtview.setText(Data.getA());
    		btn.setOnClickListener(new View.OnClickListener() {
    			
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				Data.setA("no_feiyangxiaomi");
    				Intent intent = new Intent(MainActivity.this, secondActivity.class);
    				startActivity(intent);
    			}
    		});
    	}
    }

    secondActivity.class

    1. publicclass secondActivity extends Activity{ 
    2.     @Override 
    3.     protectedvoid onCreate(Bundle savedInstanceState){ 
    4.         super.onCreate(savedInstanceState); 
    5.         setContentView(R.layout.second); 
    6.         Button btn = (Button) this.findViewById(R.id.button2); 
    7.         final TextView txtview = (TextView) this.findViewById(R.id.second); 
    8.         txtview.setText(Data.getA()); 
    9.         btn.setOnClickListener(new View.OnClickListener() { 
    10.              
    11.             @Override 
    12.             publicvoid onClick(View v) { 
    13.                 // TODO Auto-generated method stub               
    14.                 Data.setA("feiyangxiaomi"); 
    15.                 Intent intent = new Intent(secondActivity.this, MainActivity.class); 
    16.                 startActivity(intent); 
    17.             } 
    18.         }); 
    19.     } 
    public class secondActivity extends Activity{
    	@Override
    	protected void onCreate(Bundle savedInstanceState){
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.second);
    		Button btn = (Button) this.findViewById(R.id.button2);
    		final TextView txtview = (TextView) this.findViewById(R.id.second);
    		txtview.setText(Data.getA());
    		btn.setOnClickListener(new View.OnClickListener() {
    			
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub				
    				Data.setA("feiyangxiaomi");
    				Intent intent = new Intent(secondActivity.this, MainActivity.class);
    				startActivity(intent);
    			}
    		});
    	}
    }

    1.3运行程序                     

    说明:程序首先进入MainActivity.class中,获取Data中变量b的值,显示图1所示的界面feiyangxiaomi,单击button后app.setB("no_feiyangxiaomi"), 修改变量b的值。

               跳转到secondActivity.class,获取Data中变量b的值,显示图2所示的界面no_feiyangxiaomi,单击button后app.setB("feiyangxiaomi"), 修改变量b的值。

               跳转回MainActivity.class……  循环

    3.总结                                                                                       
        两种方法我测试的都可以的,大多数人应该更会偏向于第一种,毕竟Application是android专门提供的应用入口,并且运行周期贯穿整个程序运行。

  • 相关阅读:
    Repeater1绑定数据,编辑数据的一些参考文章
    UrlRewritingNet 完美实现 ASP.NET 2.0 中的URL重写(映射) (转)
    asp.net下linkbutton的前后台使用方法
    sqlserver 中判断是否数字,是否汉字的方法
    asp.net中Excel导入(使用微软OLEDB驱动)
    asp.net获取URL和IP地址
    警告: 程序集绑定日志记录被关闭。
    301永久重定向asp.net实现方法
    Net程序如何防止被注入
    C++实现wc.exe程序
  • 原文地址:https://www.cnblogs.com/freeliver54/p/3633962.html
Copyright © 2011-2022 走看看