首先设置全局变量的方法不只下面一种,但是通常会采用application保存全局变量。
Application是android专门提供的应用入口,最重要的是它的运行周期可以贯穿整个程序运行。
下面通过代码来说明设置全局变量的方法。
1.定义GlobalVariable类继承Application
import android.app.Application;
public class GlobalVariable extends Application {
private String route_id;
private static String NAME = "MyApplication";
public String getRoute(){
return this.route_id;
}
public void setRoute(String route){
this.route_id=route;
}
public void onCreate(){
super.onCreate();
System.out.println(NAME);
setRoute(NAME);
}
}
2.通过两个类来观察全局变量值的变化是否符合要求
(1)MainActivity类
在onCreate()函数中执行以下代码,可以在LogCat中看到输出值为MyApplication
private GlobalVariable route;
route=(GlobalVariable)getApplication();//获得应用程序GlobalVariable
Log.e("yuanzhi", route.getRoute());
在需要改变全局变量值的地方,加入以下代码,即改变了全局变量的值,可以去其它类中查看值是否发生了变化
route.setRoute("change");
(2)OtherActivity类
可以看到值发生了变化,输出的值为change
private GlobalVariable route;
route=(GlobalVariable)getApplication();
route_name=route.getRoute();
Log.e("changed", route.getRoute());
3.我们创建的Android项目并没有ApplicationManifest.xml,需要创建ApplicationManifest.xml
应当注意包名要写自己的包名,android:name的名称也要根据自己的项目需要进行修改。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="upc.edu"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:name="upc.edu.DBManager.GlobalVariable">
<activity android:name="upc.edu.cn.MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="upc.edu.cn.TakePhotoActivity"></activity>
</application>
<uses-sdk android:minSdkVersion="8" />
</manifest>
4.但是如果添加了ApplicationManifest.xml,会出现如下的错误
这是因为没有在AndroidManifest.xml中声明。
在<application>中声明 android:name="upc.edu.DBManager.GlobalVariable" (根据自己的需要修改),这样问题就解决,可以正常运行了。
开始可能会有错误,但是按照上面的步骤一步一步来就能够在Android项目不同的Activity间设置全局变量啦~