DialogFragmentとAlertDialogと画面遷移

DialogFragment の内部でシンプルな AlertDialog を使っていて、さらにその AlertDialog のボタンから画面遷移の処理をしているときの注意点についてです。

簡単な例

簡単な実装例です。
画面のボタンを押したらダイアログを表示して、そのダイアログのボタンが押されたら、ダイアログを閉じて次の画面に遷移するのを想定してます。

実際の結果

先程の実装では実は問題あります。

原因

ダイアログのボタンで画面遷移をしない通常のときと、ダイアログのボタンで画面遷移をするときの動作を見ると原因が分かります。

通常の動作

画面遷移をせずに普通にダイアログが閉じた場合の動作についてです。

画面遷移したときの動作

では、今回のように AlertDialog のボタンイベントで画面遷移をした場合の動作について解説します。

対応

対応としては簡単で、ボタンを押したときに画面遷移前にちゃんとダイアログを閉じてあげるだけです。

補足

DialogFragment を表示するときは childFragmentManager を使うようにしましょう。

Programmer / Gamer / Google Developers Expert for Android, Kotlin / @STAR_ZERO

Programmer / Gamer / Google Developers Expert for Android, Kotlin / @STAR_ZERO