Как говорится в названии, в чем разница между отклонением или отменой диалога в Android?
В чем разница между отклонением или отменой диалога в Android?
Ответ 1
Как правило, диалоговое окно отклоняется, когда его задание завершено, и оно удаляется с экрана. Диалог отменяется, когда пользователь хочет выйти из диалогового окна и нажимает кнопку "Назад".
Например, у вас есть стандартный диалог Да/Нет на экране. Если пользователь нажимает "Нет" , диалог отклоняется и значение "Нет" возвращается вызывающему. Если вместо выбора "Да" или "Нет" пользователь нажимает "Назад", чтобы выйти из диалогового окна, а не сделать выбор, диалог отменяется, и для вызывающего не возвращается значение.
Ответ 2
dismiss
- это то, что вы должны явно вызвать в своем коде, обычно для ответа на событие click на кнопке в Dialog
. Если вы предпочитаете, вы можете вызвать dismissDialog
в Activity
, который в свою очередь вызовет dismiss
на Dialog
.
Метод cancel
выполняется только в том случае, если он явно вызван в вашем коде или когда пользователь нажимает кнопку BACK, когда открыт ваш отменимый Dialog
(как указано @Lee).
Если вы используете DatePicker
, тогда все это по-прежнему. Как сказал @Lee, DatePickerDialog.OnDateSetListener
просто определяет, когда пользователь выбрал дату из DatePicker
.
Ссылка для разработчиков Android содержит дополнительную информацию о Dialog
s.
Ответ 3
Dismiss
Вызов dismiss удаляет диалог с экрана. Этот метод может быть безопасно вызван из любого потока. Обратите внимание, что вам не следует переопределять этот метод для очистки после закрытия диалогового окна, вместо этого реализуйте это в onStop.
Cancel
Вызов отмены, отменяет диалог. По сути, это то же самое, что вызов dismiss(), но также вызовет ваш DialogInterface.OnCancelListener, если он зарегистрирован.
Hide
Этот метод скрывает диалог, но не закрывает его.
А подробнее смотрите здесь