Fragment.setTargetFragmentには、リクエストコードを指定することも出来た。
で、このリクエストコードは、Fragment.getTargetRequestCodeを使って取得できる。
これと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。
onActivityResult側でも123。
messageは"OK"。
NGを押した場合も、requestCodeは同じで、messageは"NG"となる。
Sample/android/Fragment/getTargetRequestCode/src/Fragment at master · bg1bgst333/Sample · GitHub