以前都是建立一個ConstData的類來保存全局用的變量,但是有時候確實是有點小問題。
所以研究了一下使用Application來建立全局變量,下面就是代碼,主要分為四個文件:
(1)是MyApplication類,保存全局變量以及變量的查詢和修改
(2)TestAndroid 類 也是主類
(3)otherActivity 另外一個類調用全局變量試試是不是被主類改變了
(4)manifest.xml文件
MyApplication
- package an.test.android;
-
- import android.app.Application;
-
- public class MyApp extends Application{
-
- private String mylabel ;
- public String getLabel(){
- return mylabel;
- }
- public void setLabel(String s){
- this.mylabel = s;
- }
-
- @Override
- public void onCreate() {
- // TODO Auto-generated method stub
- super.onCreate();
- setLabel("Welcome!"); //初始化全局變量
- }
- }
TestAndroid
- package an.test.android;
-
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.util.Log;
-
- public class TestAndroid extends Activity {
- /** Called when the activity is first created. */
-
-
- private MyApp myApp;
-
-
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
- myApp = (MyApp) getApplication(); //獲得自定義的應用程序MyApp
- Log.i("guoll", "InitLabel:"+myApp.getLabel()); //將我們放到進程中的全局變量拿出來,看是不是我們曾經設置的值
-
- myApp.setLabel("Changing!"); //修改一下
- Log.i("guoll", "ChangeLabel:"+myApp.getLabel()); //看下,這個值改變了沒有
-
- Intent intent = new Intent(); //再看一下在另一個Activity中是取到初始化的值,還是取到修改後的值
- intent.setClass(this, otherActivity.class);
- startActivity(intent);
-
-
-
- }
- }
otherActivity
- package an.test.android;
-
- import android.app.Activity;
- import android.os.Bundle;
- import android.util.Log;
-
- public class otherActivity extends Activity{
-
- private MyApp myApp;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
-
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
- myApp = (MyApp) getApplication(); //獲得自定義的應用程序MyApp
- Log.i("guoll", "OhterActivity receive the Label:"+myApp.getLabel()); //查看變量值是否修改了
-
- }
- }
manifest.xml
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="an.test.android"
- android:versionCode="1"
- android:versionName="1.0">
-
-
-
- <application android:icon="@drawable/icon" android:label="@string/app_name" android:name="MyApp" >
-
- <activity android:name=".TestAndroid"
- 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=".otherActivity">
- </activity>
-
- </application>
- </manifest>
這裡尤其要注意的一點就是:MyApp這個類要在manifest中進行注冊,其實就是加上了一行代碼
android:name="MyApp"
但是這個是必須的!
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11