DialogFragmentを使ってダイアログを表示する

ツイート このエントリーをはてなブックマークに追加
1つ上へ / ブログトップへ

世の中に出回っているサンプルはAlertDialogを使うサンプルばかりなので、ここでは生のDialogにsetContentView()するタイプを紹介します。

まずは、DialogFragmentを継承したクラスを作ります。

public class MyDialogFragment extends DialogFragment {
    public static MyDialogFragment newInstance(Fragment target, int requestCode) {
        MyDialogFragment fragment = new MyDialogFragment();
        fragment.setTargetFragment(target, requestCode);

        Bundle args = new Bundle();
        fragment.setArguments(args);

        return fragment;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        Dialog dialog = new Dialog(getActivity());
        dialog.setContentView(R.layout.dialog_input);
        
        return dialog;
    }
}

重要なのはonCreateDialog()メソッドです。このメソッドでDialogオブジェクトを作成し、returnすることでダイアログが表示されます。

さっそく呼び出してみましょう。呼び出し側のFragmentにshowMyDialog()メソッドを追加したとします。

void showMyDialog() {
    MyDialogFragment dialog = MyDialogFragment.newInstance(this, REQUEST_NAME);
    dialog.show(getFragmentManager(), "dialog");
}

newInstance()メソッドの引数にFragmentとリクエストコードを渡していますが、これについては次のエントリーでどう使われているかを紹介します。

DialogFragmentの表示はshow()メソッドを呼ぶだけです。ActivityのshowDialog()ではないので注意しましょう。

1つ上へ / ブログトップへ