DialogFragment
をnewしてdialogを表示させ、 そこでのbutton tapによって、元のActivity上で処理をさせたい時、 どうやってfeedbackしたら良いのかなと。 呼び出し元はFragment
ではなくActivity
なので、 Fragmentで呼び出し元に結果を伝えるReceive result from DialogFragment等にあるようにsetTargetFragment()
を使えないんですよね。
結局、DialogFragment
側にsetCallback(Callback callback)
と Functional InterfaceとしてCallback
を定義して、 button押したらcallback.call();
とし、 呼び出し元のActivity
側でnew SomeDialogFragment().setCallback(() -> someMethod())
としてやりたいことをsomeMethod()
に込めました。 ちょっと面倒ですけどこのようにcallback駆使するしか無いのかなぁと。 onActivityResult()
はgetTargetFragment()
が使えないのと 処理をActivity
側に書きたいというのがあったので。 いや、onActivityResult()
の中身はActivity
側ですか。 setTargetFragment()
の代わりに何かActivity
のreferenceを DialogFragment
側に持たせればよかった?のかな? いやいや、そもそもFragment
からgetActivity()
で取得できる? からこんなことしなくてよかった? あれ?? いやーでもDialogFragment
側は引数の情報を持っておらず、 Activity
側しか引数持ってないんですよね。 今回のぼくの場合では、 引数を引き回すか、再度SQLで取得するかしてonActivityResult()
でkickするか、 callbackを作るか、ということだったでしょうか。