Intereting Posts
Консоль разработчика Google Play: приложение застряло в «Обновление обработки» Как подписать файл apk для Android Android Как настроить макет в полноэкранном режиме, когда видна клавиатура Информировать активность из BroadcastReceiver ТОЛЬКО, если он находится на переднем плане Как отменить обработчик в коде? Разница между AsyncTask и Thread / Runnable Android – стиль кнопки по умолчанию SearchView при проблемах с библиотекой support.v7.appcompat: по умолчанию 9-патч-фон не отображается правильно Начать виртуальный тур с помощью gmaps v2 для Android Ошибка INSTALL_FAILED_DEXOPT при попытке установить приложение Android Google Maps Не удалось найти стиль «mapViewStyle» в текущей теме ClassCastException: ApiVersionImpl не может быть передан в java.lang.Integer Является ли «ANR» исключением или ошибкой или что? Как вы можете получить номер версии манифеста из XML-переменных приложения (Layout)? Android: включение и обслуживание

Преимущества DialogFragment перед AlertDialog

При разработке приложения для Android я читал, что рекомендуется использовать DialogFragment вместо прямого использования AlertDialog для отображения предупреждений и подтверждений.

Это делается, например, в документации DialogFragment: http://developer.android.com/reference/android/app/DialogFragment.html

Люди также говорят, что они предпочитают это здесь: Android DialogFragment vs Dialog

Я хотел бы знать преимущества этого подхода, поскольку код становится более сложным.

благодаря

Solutions Collecting From Web of "Преимущества DialogFragment перед AlertDialog"

Используйте диалог DialogFragment over Dialog:


  • Начиная с введения уровня API 13 :

    Метод showDialog из Activity устарел . Вызов диалога в другом месте кода не рекомендуется, так как вам придется самостоятельно управлять диалогом (например, изменение ориентации). Не использование showDialog приведет к случайным исключениям, диалог не связан с какой-либо деятельностью.

    Примечание о showDialog:

    Ссылка на Dialog: Activities предоставляет возможность управлять созданием, сохранением и восстановлением диалогов. См. OnCreateDialog (int), onPrepareDialog (int, Dialog), showDialog (int) и rejectDialog (int). Если эти методы используются, getOwnerActivity () вернет действие, управляющее этим диалогом.

  • Различия DialogFragment – AlertDialog

    Одна вещь, которая приходит на ум при чтении вашего вопроса. Разве они разные? Диалоговый фрагмент довольно похож на диалог, он просто обернут внутри фрагмента. Из справки Android относительно DialogFragment:

    Диалоговый фрагмент – это фрагмент, который отображает диалоговое окно, плавающее поверх окна его активности. Этот фрагмент содержит объект Dialog, который он отображает соответствующим образом на основе состояния фрагмента. Контроль диалога (выбор, когда показывать, скрывать, отклонять его) должен выполняться через API здесь , а не с прямыми вызовами в диалоговом окне.

  • Другие примечания

    • Фрагменты – естественная эволюция в структуре Android из-за разнообразия устройств с разными размерами экрана.
    • DialogFragments и Fragments доступны в библиотеке поддержки, что делает класс пригодным для использования во всех современных версиях Android.

Это легко.
DialogFragment – это фрагмент. Итак, что может предоставить фрагмент, пока другие объекты не могут?
Это обратные вызовы жизненного цикла.
Таким образом, с DialogFragment, он может быть очень мощным и делает ваш код намного чище.
Вы когда-нибудь видели утечки окон, если вы не закрывали диалог, когда его активность разрушалась? Итак, чтобы это предотвратить, пытались ли вы когда-либо закрыть диалог, когда вызывается onPause ()? Чтобы сделать это, вам когда-либо приходилось ссылаться на этот диалог на объект уровня класса?
С помощью DialogFragment все обрабатывается.
И вы получаете все обратные вызовы жизненного цикла.
Затем вы можете обеспечить больше интеллекта в диалоговом окне и заставить его делать некоторые умные работы самостоятельно, а не активность, говоря им, что делать.