android 公共變量使用

在我們使用Android編寫程序的時候,少不了想利用全局變量,但是面嚮對象語言和過程語言區別很大,不再是include就可以的。這裏我寫了使用全局變量的兩種方法

 

1.使用application來保存全局變量                                                             

這裏沒有太多理論性的東西,無非就是一些實際操作。

1.1定義Data類繼承Application Data.class

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

1.2在manifest.xml中聲明application

[java] view plain copy
  1. android:name="com.animator1.Data" >  

1.3創建兩個Activity

MainActivity.class

[java] view plain copy
  1. public class MainActivity extends Activity {  
  2.   
  3.     @Override  
  4.     protected void 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.             public void 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.     }  
  23. }  

secondActivity.class

[java] view plain copy
  1. public class secondActivity extends Activity{  
  2.     @Override  
  3.     protected void 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.             public void 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.     }  
  22. }  

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

[java] view plain copy
  1. public class Data{  
  2.     private static String a ="feiyangxiaomi";  
  3.       
  4.     public static String getA() {  
  5.         return a;  
  6.     }  
  7.       
  8.     public static void setA(String a) {  
  9.         Data.a = a;  
  10.     }  
  11. }  

1.2創建兩個Activity

MainActivity.class

[java] view plain copy
  1. public class MainActivity extends Activity {  
  2.   
  3.     @Override  
  4.     protected void 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.             public void 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.     }  
  21. }  

secondActivity.class

[java] view plain copy
  1. public class secondActivity extends Activity{  
  2.     @Override  
  3.     protected void 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.             public void 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.     }  
  20. }  

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章