ある Activity から別の Activity へ画面遷移させる為にインテントという仕組みがあります。
別 Activity へ遷移させる方法についてはこちらを参照してください。
Android では遷移後の Activity を終了した時、その結果を呼び出し元の Activity で受け取る事ができます。
結果を受け取る側のActivityでする事
単に別の Activity へ遷移させる時には startActivityメソッドを使いましたが、結果を受け取りたい場合には startActivityForResultメソッドを使います。
startActivityForResultメソッドで起動された Activity が終了すると、onActivityResultメソッドが呼び出されます。
startActivityForResult
startActivityForResultメソッドでは、呼び出す Activity の Intent に加えて、リクエストコードという値を引数として与えます。呼び出したい Activity が複数ある場合にこのリクエストコードを使ってどの Activity からの結果なのかを判断できます。
private static final int REQUESTCODE_TEST = 1; : public void onTestButtonClick(View v) { Intent intent = new Intent(this, SubActivity.class); intent.putExtra("TestNum", 1); intent.putExtra("TestTxt", "テスト"); startActivityForResult(intent, REQUESTCODE_TEST); }
onActivityResult
onActivityResultメソッドには、startActivityForResultの引数としたリクエストコードと、遷移後のActivity からの結果として 結果コード と データ の2つの値を受け取ります。
結果コードは RESULT_OK か RESULT_CANCELED のどちらかで、結果を返す側の Activity にて適切な値が返るようにコーディングする必要があります。
データは結果コード以外の任意の値を受け取る為の物で、こちらも結果を返す側の Activity で値をセットします。
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case REQUESTCODE_TEST: if (RESULT_OK == resultCode) { String name = data.getStringExtra("TestName"); } break; } }
結果を返す側のActivityでする事
setResultメソッドを使って、結果コード と データ をセットします。
返すべき結果の準備が整う前に戻るボタンなどで Activity が終了される事もあるので、その判断の為に結果コードを使います。
多くの場合は setResult の引数を RESULT_OK でセットしたあと finishメソッドで終了するという使い方になると思います。
public void onOkButtonClick(View v) { Intent intent = new Intent(); intent.putExtra("TestName", "テストさん"); setResult(RESULT_OK, intent); finish(); }
コメントをお書きください