Подтвердить что ты не робот

Преимущество использования DialogFragment над простым AlertDialog?

Я прочитал несколько ответов stackoverflow.com, но до сих пор не вижу преимущества использования DialogFragment над простым AlertDialog. У меня есть, по-видимому, две стратегии:

a) используйте AlertDialog.Builder для настройки AlertDialog,.create(), а затем .show() в моей активности (в некоторых обработчиках кнопок) или

b) подкласс DialogFragment, напишите тот же код AlertDialog-building в onCreateDialog() (за исключением того, что я просто возвращаю .create(), а затем в своей операции создаю экземпляр диалогового окна DialogFragment и покажу его.

Результат выглядит одинаково.

В любом случае, я не использую устаревший код - я использую .show() как с AlertDialog, так и с DialogFragment. Является ли преимущество, когда я иду на другое устройство? Или какой смысл...

Спасибо за любые идеи,

Майкл

4b9b3361

Ответ 1

DialogFragment обрабатывает несколько случаев управления жизненным циклом для вас, включая изменения конфигурации (например, поворот экрана) и восстановление состояния, если ваш процесс приложения убит в фоновом режиме, и пользователь возвращается к нему позже. Если вы не используете DialogFragment, вам придется обрабатывать такие случаи по-другому.

Ответ 2

В дополнение к тому, что сказал @adamp, поскольку DialogFragment получает свои собственные обратные вызовы жизненного цикла, он будет отвечать за свой жизненный цикл, поэтому ваша деятельность не будет ответственна, чтобы сказать ему, что делать.

Например, когда активность завершается, ваша активность должна указывать диалоги на dimiss(), иначе вы увидите, что она имеет ошибку leaked the window в logcat.