Android应用程序开发中,有的时候我们在应用程序的任何一个地方都需要访问一个全局变量,也就是在任何一个Activity中都可以访问的变量。它不会因为Activity的生命周期结束而消失。要实现应用程序级的变量,我们可以通过Application这个类来实现。
class MyApp extends Application {
private String myState;
public String getState(){
return myState;
}
public void setState(String s){
myState = s;
}
}
class Blah extends Activity {
@Override
public void onCreate(Bundle b){
...
MyApp appState = ((MyApp)getApplicationContext());
String state = appState.getState();
...
}
}
然后再manifest中添加应用:
<application android:name=".MyApp" android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".ClickableListItemActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
注意:
不用新建<application />,在原有基础上添加内容:android:name=".your_App_Name"
Application对象只有在应用程序中所有Activity都destroy时才会destrory,所有我们可以在任何一个Activity中访问它。
参考文章:http://androidstudy.iteye.com/blog/776127
http://www.eoeandroid.com/thread-163-1-1.html
一楼:
MyApp appState = ((MyApp)getApplicationContext());
这句话错。
应该是:
MyApp appState = ((MyApp)getApplication();
二楼:
一楼是正解,但是还有个问题,class MyApp extends Application 的时候前面缺少“public”,没有public修饰,程序运行时就会报停止运行错误。