2013年11月25日

[Android] DialogFragmentの呼び出し元で結果を知るには

ダイアログ内のユーザが入力した情報を、ダイアログを呼び出したFragment側で知る必要が出てきました。
つまり、コールバックする仕組みが欲しいと思ったのです。
public class HogeDialogFragment extends DialogFragment {
// ... HogeDialogFragmentの実装

public interface Callback {
void onFuga();
}
}

ダイアログは上記のようにDialogFragmentを継承して実装しています。
そのため、コンストラクタやメソッドを使ってCallbackを渡すのはよろしくなさそう(※)です。
(※システム側でFragmentが再生成されたときに云々という話がありますね)
他に良い方法があるか調べてみましたが、どうもそういった仕組みはないようです。

いろいろと調べて、これしかないかなぁ、というのが以下のような方法

1.9. DialogFragment 実装例 − Kojionilk

android - Callback to a Fragment from a DialogFragment - Stack Overflow

ただ、この方法だと呼び出す側のクラス(ActivityかFragment)がCallbackを実装しなければならないんですよね。
public class HogeHogeFragment extends Fragment 
implements HogeDialogFragment.Callback {
// ...HogeHogeFragmentの実装
}

うーん、うーん…。なんだかイマイチな…。でも、これしか方法がなさそうな…。うーん…。
posted by t2low at 21:00| Android