Насколько я могу сказать, существует два способа показать Диалоговое окно от Действия.
AlertDialog.Builder
), и затем назовите недавно созданное Диалоговое окно show()
метод.showDialog()
метод, передающий в интервале, который исключительно определяет, какое Диалоговое окно Вы хотите создать. Затем переопределение onCreateDialog()
на самом деле создавать Диалоговое окно и Android отобразит его для Вас.Второй метод, кажется, общепринятая практика, но мне любопытно, если существует какая-либо причина, это имеет значение, какой я использую. Вот все, что я могу придумать:
Причины использовать Dialog.show
Activity.showDialog
, как описано в этом вопросе. Вам, вероятно, придется сохранить Строку или что-то в членской переменной, именно так что это может быть несколько полученных моменты спустя во время onCreateDialog
или onPrepareDialog
.showDialog()
switch
оператор в переопределенном onCreateDialog
методswitch
оператор в переопределенном onPrepareDialog
методПричины использовать Activity.showDialog
:
Activity.showDialog
скажите, что Диалоговым окном "управляет" Действие, которое я предполагаю, предоставляет некоторое преимущество? Но это также верно, если Вы используете AlertDialog.Builder
, Я думал бы, потому что Вы передаете в this
как аргумент конструктору Разработчика. Таким образом, мой вопрос, каковы критерии решения, когда использовать Activity.showDialog
и когда использовать Dialog.show
, и почему?
На мой взгляд, вам следует предпочесть showDialog
, потому что этот метод сделает большую часть работы для ты. Например, вам не нужно беспокоиться о том, что вы потеряете ссылку на свой диалог после изменения ориентации экрана. Он будет воссоздан автоматически. Dialog.show
гораздо более подвержен ошибкам.
Поэтому я предлагаю вам использовать showDialog
везде, где это возможно.
Я думаю, что решение зависит от вас, в зависимости от вы указали веские причины. Если у меня есть действие, в котором есть только одно диалоговое окно (скажем, для отображения предупреждения), я бы просто запустил метод Dialog.show
... с другой стороны, если пользовательский интерфейс моего приложения тоже полагается большая часть его функциональных возможностей связана с использованием диалогов, было бы гораздо лучше использовать showDialog ()
. Я думаю, что лучшим преимуществом использования showDialog ()
является то, что его легче читать:
final int ERROR_DIALOG = 404;
final int MSG_DIALOG = 200;
.....
// if someone else read this, he/she will immediately understand what's going on
showDialog( ERROR_DIALOG );