起動した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(); }