u-ryo's blog

various information for coding...

Category: Dialog

How to Get the Result From DialogFragment

| Comments

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