Android全局变量值之ApplicationContext

来源:互联网 发布:windows游戏模拟器 编辑:程序博客网 时间:2024/05/29 16:25

第一步:定义全局变量对象(类),继承至 android.app.Application ,代码如下:

[java] view plaincopy
  1. import android.app.Application;  
  2.   
  3. public class ApplicationHelper extends Application {  
  4.         // 操作帐号     
  5.     private  String  logicAccount="";  
  6.         // 操作密码      
  7.      private  String  logicPass="";  
  8.     public String getLogicAccount() {  
  9.         return logicAccount;  
  10.     }  
  11.     public void setLogicAccount(String logicAccount) {  
  12.         this.logicAccount = logicAccount;  
  13.     }  
  14.     public String getLogicPass() {  
  15.         return logicPass;  
  16.     }  
  17.     public void setLogicPass(String logicPass) {  
  18.         this.logicPass = logicPass;  
  19.     }  
  20.   
  21. }  


 


第二步:给全局变量赋值,代码如下:

[java] view plaincopy
  1. ((ApplicationHelper)getApplicationContext()).setLogicAccount( name.getText().toString());  
  2. ((ApplicationHelper)getApplicationContext()).setLogicPass(pwd.getText().toString());  


 


第三步:把全局变量类注册到 AndroidManifest.xml文件中去:

 

[java] view plaincopy
  1. <application         
  2. android:name=".ApplicationHelper"         
  3. android:icon="@drawable/ic_launcher"        
  4. android:label="@string/app_name"         
  5. android:theme="@style/AppTheme" >  
  6. <!--应用程序的其他Activity注册内容-->      
  7. </application>   



第四步:获取全局变量值,代码如下:

 

[java] view plaincopy
  1. String userAccount= ((ApplicationHelper)getApplicationContext()).getLogicAccount() ;  
  2. String userPass= ((ApplicationHelper)getApplicationContext()).getLogicPass();  
  3. System.out.println(userAccount);  
  4. System.out.println(userPass);   


 

注意问题:

1.无论是给全局变量赋值还是取值必须 使用 (ApplicationHelper)getApplicationContext() 对象,不可以使用  ApplicationHelper  aHelper=  (ApplicationHelper)getApplicationContext() , 因为 每 使用一次 ApplicationHelper  aHelper 就是新创建一个对象,每次都是新对象,变量的值就不能共享,也就失去全局变量存在意义。

2.把全局变量注册到AndroidManifest.xml 时应该注意,一定要把 全局变量对象类(ApplicationHelper)定义到要使用全局变量的应用(application)中,如果给全局变量赋值 和注册全局变量类不在同一个应用中,无法共享全局变量值。

3. Application全局变量取值时,最好在onCreate方法中去,不然会引发空指针异常问题(这部分为后期开发遇到问题,属性名称和方法名称和以前不一致,不过不影响大家学习)

错误代码:

[html] view plaincopy
  1. private  String  estination_code=((ApplicationHelper)getApplicationContext()).getDestination_code();  
  2. private  String user_name=((ApplicationHelper)getApplicationContext()).getUser_name();  


会引发空指针异常


正确代码:

[html] view plaincopy
  1. private  String  estination_code="";  
  2. private  String  user_name="";  
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.activity_challenge);  
  7.         estination_code=((ApplicationHelper)getApplicationContext()).getDestination_code();  
  8.         user_name=((ApplicationHelper)getApplicationContext()).getUser_name();  
  9.   
  10.     }  
0 0
原创粉丝点击