Какой вариант вызова диалога вы используете в Android?

Давно мучает один вопрос — какой способ вызова диалога в Android считается лучшим и почему?


SDK предлагает два варианта: showDialog(Dialog dialog) и showDialog(int dialogId [, Bundle bundle]), где второй помечен как deprecated, и рекомендуется пользоваться аналогичным методом фрагментов, но суть осталась та же.


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


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


Что вы думаете по этому поводу? Может, я что-то упустил?
  • Вопрос задан
  • 4066 просмотров
Пригласить эксперта
Ответы на вопрос 3
serso
@serso
Я использую
android.app.AlertDialog
с его
android.app.AlertDialog.Builder
Польность управляемый диалог — можно использовать три кнопки (можно названия разные вешать), вешать свою view, listener'ы на нажатия кнопок и т.д. Создаётся каждый раз заново — динамически.

А для того, чтобы диалог не исчезал — достаточно указать a:configChanges=«orientation» для actvity, где он был вызван.
Ответ написан
falstaf
@falstaf
поэтому возникают трудности с отображением актуальных данных если диалог нужно поднять больше одного раза и с различными исходными данными

В этом случае — предварительный вызов removeDialog(id), что не очень-то красиво.

А вообще, DialogFragment — имхо, лучший и наиболее удобный вариант.
Ответ написан
serso
@serso
Можно поинтересоваться почему так писать не рекомендуется?
Только что пробежался по guide'у, но ничего вразумительного не нашёл кроме замечания, в котором, кстати, не объясняются причины такого поведения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы