Fragment.getTargetRequestCode

Fragment.setTargetFragmentには、リクエストコードを指定することも出来た。
で、このリクエストコードは、Fragment.getTargetRequestCodeを使って取得できる。

Fragment  |  Android Developers

これとFragment.onActivityResultを使うことで、ターゲットへのキャストなしに、ターゲット側で処理が出来る。
リクエストコードを使う場合は、DialogFragmentの例が一般的。
Fragment1.javaは、

CustomDialogFragmentの表示で、自身のFragmentとしてthis、そしてリクエストコード123を渡す。
onActivityResultで、RESULT_OKなら、リクエストコードを表示。
リクエストコードが123なら、さらにメッセージを表示。
CustomDialogFragment.javaは、

OKなら、messageに"OK"を登録。
getTargetRequestCodeでリクエストコードrを取得し表示。
target.onActivityResultで、Fragment1のonActivityResultが呼ばれるようにしている。
NGの場合も、同じような感じになっている。

起動時
起動時

起動時。
Button1を押すと、

ダイアログが出る
ダイアログが出る

ダイアログが出る。
OKを押すと、

rが123
rが123

rが123。

onActivityResult側でも123
onActivityResult側でも123

onActivityResult側でも123。

messageは"OK"
messageは"OK"

messageは"OK"。

NGを押した場合も、requestCodeは同じで、messageは"NG"となる。
NGを押した場合も、requestCodeは同じで、messageは"NG"となる。

NGを押した場合も、requestCodeは同じで、messageは"NG"となる。

Sample/android/Fragment/getTargetRequestCode/src/Fragment at master · bg1bgst333/Sample · GitHub