アクティビティAから、別のアクティビティBを起動した後、元のアクティビティAに戻るときに、アクティビティBから値を受け取って、アクテビティA上で表示・・・。
このように戻るときにパラメータを受け取りたい場合は、Activity.startActivityForResultを使う・・・。
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に書いておくのを忘れずに・・・。
MainActivityのButton1を押すと、
SubActivityが起動するので、SubActivityのButton2を押してみる・・・。
SubActivityからMainActivityに戻り、その時messageである"ABCDE"がMainActivityに渡るので、MainActivityにてToastでそれを表示できる・・・。
Sample/android/Activity/startActivityForResult/src/Activity at master · bg1bgst333/Sample · GitHub