2011年12月1日

【Android】Activity間でデータの受け渡しをする(2)

前回は親Activityから子Activityへのデータの受け渡しを解説いたしました。

今回はその逆をやってみましょう。


まず、親クラス内に子Activityの呼び出し口を設置します。

ParentActivity.java

int REQUEST_CODE = 123;
  Intent intent = new Intent(ParentActivity.this, ChildActivity.class
  startActivityForResult(intent, REQUEST_CODE);

このコードを実行するとChildActivityを実行します。

続いて、子Activityの受け取り口と思いましたが、受けるデータがないので特に必要ありません。
子Activityでデータを渡す部分を記述します。
前回と同様で"Hello World"を渡したいと思います。

ChildActivity.java

Intent intent = new Intent();
  Bundle bundle = new Bundle();
  bundle.putString("key", "Hello World");
  intent.putExtras(bundle);
  setResult(RESULT_OK, intent);
  finish();

これで、ChildActivityからデータを格納いたしました。
では、このkeyに関連するvalueを親クラスで取得します。

ParentActivity.java

protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
  super.onActivityResult(requestCode, resultCode, intent);
  Bundle bundle;
  if (intent != null){
    bundle = intent.getExtras();
    if (resultCode == RESULT_OK){
      String hello_world = bundle.getString("key");
    } else if (resultCode == RESULT_CANCELED ){
      // do something here…
    }
  }
}

このメソッドをParentActivity.javaに作成し、ここで受け取ります。

これで、親クラスで変数を扱えます。

こんな簡単なメソッドしか使っていないOneClickHomeをお願いします。