2012年10月15日

【Android】Activity間で変数を共有する


複数のActivity間で変数を共有する場合、
startActivityに渡すIntentで共有する方法もありますが、
各Applicationで1つのインスタンスしか生成されない、
Applicationクラスを拡張する方法もあります。
今回はそちらを紹介します。



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.xmlの編集


Manifest.xmlのApplication部分を変更する事を忘れないで下さい。
<application android:name=".MyApp" 
       android:icon="@drawable/icon" 
       android:label="@string/app_name">