转自:http://blog.csdn.net/jenminzhang/article/details/8112218
第一步:定义全局变量对象(类),继承至 android.app.Application ,代码如下:
- import android.app.Application;
- public class ApplicationHelper extends Application {
- // 操作帐号
- private String logicAccount="";
- // 操作密码
- private String logicPass="";
- public String getLogicAccount() {
- return logicAccount;
- }
- public void setLogicAccount(String logicAccount) {
- this.logicAccount = logicAccount;
- }
- public String getLogicPass() {
- return logicPass;
- }
- public void setLogicPass(String logicPass) {
- this.logicPass = logicPass;
- }
- }
第二步:给全局变量赋值,代码如下:
- ((ApplicationHelper)getApplicationContext()).setLogicAccount( name.getText().toString());
- ((ApplicationHelper)getApplicationContext()).setLogicPass(pwd.getText().toString());
第三步:把全局变量类注册到 AndroidManifest.xml文件中去:
- <application
- android:name=".ApplicationHelper"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <!--应用程序的其他Activity注册内容-->
- </application>
第四步:获取全局变量值,代码如下:
- String userAccount= ((ApplicationHelper)getApplicationContext()).getLogicAccount() ;
- String userPass= ((ApplicationHelper)getApplicationContext()).getLogicPass();
- System.out.println(userAccount);
- System.out.println(userPass);
注意问题:
1.无论是给全局变量赋值还是取值必须 使用 (ApplicationHelper)getApplicationContext() 对象,不可以使用 ApplicationHelper aHelper= (ApplicationHelper)getApplicationContext() , 因为 每 使用一次 ApplicationHelper aHelper 就是新创建一个对象,每次都是新对象,变量的值就不能共享,也就失去全局变量存在意义。
2.把全局变量注册到AndroidManifest.xml 时应该注意,一定要把 全局变量对象类(ApplicationHelper)定义到要使用全局变量的应用(application)中,如果给全局变量赋值 和注册全局变量类不在同一个应用中,无法共享全局变量值。
3. Application全局变量取值时,最好在onCreate方法中去,不然会引发空指针异常问题(这部分为后期开发遇到问题,属性名称和方法名称和以前不一致,不过不影响大家学习)
错误代码:
- private String estination_code=((ApplicationHelper)getApplicationContext()).getDestination_code();
- private String user_name=((ApplicationHelper)getApplicationContext()).getUser_name();
会引发空指针异常
正确代码:
- private String estination_code="";
- private String user_name="";
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_challenge);
- estination_code=((ApplicationHelper)getApplicationContext()).getDestination_code();
- user_name=((ApplicationHelper)getApplicationContext()).getUser_name();
- }