Activity.startActivityForResult

アクティビティAから、別のアクティビティBを起動した後、元のアクティビティAに戻るときに、アクティビティBから値を受け取って、アクテビティA上で表示・・・。
このように戻るときにパラメータを受け取りたい場合は、Activity.startActivityForResultを使う・・・。

Activity | Android Developers

activity_main.xmlは、

button1を配置・・・。

activity_sub.xmlを追加し、

button2を配置・・・。

button1がクリックされたら、startActivityForResultでSubActivityを起動する・・・。
(activity_sub.xmlがUIとなるActivity・・・。)
第2引数はrequestCodeというもので、これで複数のボタンから複数の起動リクエストが発生してもどれか認識できる・・・。
今回は1つしか置かないので1で・・・。

起動先にあるbutton2が押されたら、dataというIntentオブジェクトにputExtraでパラメータをセット・・・。
キーは"message"、値は"ABCDE"・・・。
それをsetResultでresultCodeとともにセット・・・。
resultCodeは結果どうなったかを表すもので、今回はRESULT_OKに・・・。
そのあとfinishを呼び出すことで、元のアクティビティに戻る・・・。

戻ってきたら、onActivityResultに飛ぶ・・・。
resultCodeがRESULT_CANCELEDなら、その先は処理しない・・・。
resultCodeはRESULT_OKのはずなので、その場合はrequestCodeを確認し、1だった場合はdata.getStringExtraで"message"をキーとする値を取り出す・・・。
でそれをToastで表示・・・。

SubActivityも起動できるようにAndroidManifest.xmlに書いておくのを忘れずに・・・。

f:id:BG1:20160927171205p:plain

MainActivityのButton1を押すと、

f:id:BG1:20160927171225p:plain

SubActivityが起動するので、SubActivityのButton2を押してみる・・・。

f:id:BG1:20160927171315p:plain

SubActivityからMainActivityに戻り、その時messageである"ABCDE"がMainActivityに渡るので、MainActivityにてToastでそれを表示できる・・・。

Sample/android/Activity/startActivityForResult/src/Activity at master · bg1bgst333/Sample · GitHub