[轉]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專門提供的應用入口,並且運行周期貫穿整個程序運行。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM