Android の Dialog の基礎
前略: ダイアログはDialogではなくDialogFragmentで作るというめんどくささ Android でダイアログを作ろうとすると、今は「DialogFragment で作る」というのが一般的です。ただ、調べると、DialogFragmentを使わずにAlertDialogだけでダイアログを作る記事なども見受けられると思います、、、、ここでは、ダイアログはDialogFragmentで作るのが一般的だということと、その時の注意点を。 Dialog is ダイアログUIを提供するクラスです。代表的なサブクラスはAlertDialogやDatePickerDialogなどがあります。DialogFragmentを使う場合でも、UIを実現しているのはこれらのクラスが実態になります。UIとしては画面上の一部で表示するのが一般的ですが、全画面として表示するようにカスタムすることも可能です。参考 DialogFragment is 公式サイトによると、以下のように。 これらのクラスでは、ダイアログのスタイルと構造が定義されますが、ダイアログのコンテナとして DialogFragment を使用してください。DialogFragment クラスでは、Dialog オブジェクトでメソッドを呼び出す代わりに、ダイアログの作成と表示の管理に必要なすべてのコントロールが提供されます。DialogFragment を使ってダイアログを管理すると、ライフサイクル イベント(戻るボタンを選択したときや画面を回転したときなど)が正しく処理されます。DialogFragment クラスを使用すると、従来の Fragment のように、大きな UI で埋め込み可能なコンポーネントとしてダイアログの UI を再利用することもできます(ダイアログ UI を大小の画面で異なって表示させる場合など)。 少しかいつまんで言うと↓↓↓ ダイアログのコンテナとして DialogFragment を使ってね。 ダイアログ制御に必要なすべてのコントロールができるよ。 戻るボタン押したときや画面回転したときなどのライフサイクルイベントで正しく動くよ。 DialogFragment 使わないといけないの?? 「ダイアログ表示したいだけなのに、何?ダイアログ「フラグメント」って」「なんか直感的じゃないんだよな、ダイアログでいいじゃん」と思う人もいると思います。少し歴史を紹介しますが、使わないといけないというわけではないです。が、もう Google 的には Dialog 使う場合は DialogFragment を使うという感じになってます。 Android2系時代当時、Dialog表示は Activity の onCreateDialog メソッドでダイアログ表示処理を書いて、 showDialog というメソッドを呼び出すことで onCreateDialog が実行され、表示していた。これが一般的だった。 ちなみに、 onCreateDialog で実装しないと画面回転時などにクラッシュするか、落ちないにしても WindowLeak …