Wednesday, June 15, 2011

Android裡使用global variable

寫程式,難免要用到一些global variables,在Android裡面當然也不例外。我的實際遭遇是剛開始本來是想要在Activities間來傳遞variables,通常可以用如下的方式:

若要將"hello"由ActivityA傳給ActivityB的話首先要在ActivityA中作如下的動作
String text="hello";
Intent intentA = new Intent(ActivityA, ActivityB.class);
intentA.putExtra("variable", text);
startActivity(intentA);
接著可以到ActivityB中去接收就行了
Bundle bundle = getIntent().getExtras();
String text = bundle.getString("variable");

但是使用這個方法的限制就是傳遞的參數只能為String或是可以Serialize的物件,要是你要傳的不符合,那真的就頭大了,這時候就得要靠android.app.Application在Android裡建立一個全域物件來達成了,方法如下:

1.先建立自己的全域物件,裡面隨便你要擺什麼variable都行

        public class MyApp extends Application{
                   int            int_test;
                   boolean  boolean_test;
                   String      string_test;
                   ...
        }
2.在AndroidManifest.xml裡加上android:name="MyApp",如下
      
3.然後在你想要讀寫MyApp的Activity透過下面的方式就可以存取你放在MyApp中的任何variable了:
        MyApp myapp = ((MyApp)getApplicationContext());
        myapp.int_test=12;
        if (myapp.boolean_test==false)
           myapp.string_test="Error!";

這樣是不是就解決了這個讓人頭大的問題了呢!

No comments:

Post a Comment