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