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を作るか、ということだったでしょうか。