Androidアプリ開発メモ(3)

起動したActivityから結果を返してもらう

【要点】
startActivityForResult()で起動したActivityは、終了時に起動元にIntentを送り、起動元のonActivityResult()が呼ばれる。

  /* 起動元 */
  
  // なんかボタンが押されたら
  public void onClick(View v)
  {
    // このActivityからあのActivityへのIntent
    Intent intent = new Intent(this, HogeActivity.class);
    // あのActivityへ送るリクエストコード
    int requestCode = 123;
    // あのActivityを起動する
    startActivityForResult(intent, requestCode);
  }
 
  // あのActivityが終了したら結果とともに呼ばれる
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data)
  {
    super.onActivityResult(requestCode, resultCode, data);
    Bundle bundle = data.getExtras();
 
    // あのActivityを起動したときに指定したリクエストコード
    switch (requestCode) {
    case 123:
      if (resultCode == RESULT_OK) {
        ...
      }
      break;
    }
  }
  /* 起動先 */

  // なんかボタンが押されたら
  public void onClick(View v)
  {
    if (v.equals(btn_ok)) {
      // 返すデータの作成
      Intent data = new Intent();
      Bundle bundle = new Bundle();
      bundle.putString("key.StringData", "送り返す文字列");
      bundle.putInt("key.intData", 123456789);
      data.putExtras(bundle);
      // 返すデータの設定
      setResult(RESULT_OK, data);
      // Activityの終了
      finish();
  }

【参考URL】 http://fernweh.jp/b/startactivityforresult/