В чем разница между закрытием или отменой диалога в Android? - PullRequest
174 голосов
/ 27 июня 2010

Как видно из названия, в чем разница между закрытием или отменой диалога в Android?

Ответы [ 3 ]

168 голосов
/ 27 июня 2010

Как правило, диалоговое окно закрывается, когда его работа завершена и он удаляется с экрана. Диалог отменяется, когда пользователь хочет выйти из диалога и нажимает кнопку «Назад».

Например, у вас есть стандартный диалог Да / Нет на экране. Если пользователь нажимает «Нет», то диалоговое окно закрывается, и значение «Нет» возвращается вызывающей стороне. Если вместо выбора «Да» или «Нет» пользователь нажимает кнопку «Назад», чтобы выйти из диалогового окна, а не сделать выбор, тогда диалоговое окно отменяется и никакое значение не возвращается вызывающей стороне.

25 голосов
/ 06 декабря 2010

dismiss - это то, что вы должны явно вызывать в своем коде, обычно для ответа на событие нажатия на кнопку в вашем Dialog.При желании вы можете вызвать dismissDialog в Activity, что, в свою очередь, вызовет dismiss в Dialog.

. Метод cancel выполняется только тогда, когда он явно вызывается в вашемкод или когда пользователь нажимает кнопку НАЗАД, когда ваш отменяемый Dialog открыт (как заметил @Lee).

Если вы используете DatePicker, то все это по-прежнему так.Как сказал @Lee, DatePickerDialog.OnDateSetListener просто определяет, когда пользователь выбрал дату из DatePicker.

Справочник разработчика Android предоставляет дополнительную информацию о Dialog с.

6 голосов
/ 18 мая 2018

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

Cancel Вызов отмены отменяетдиалог.По сути это то же самое, что и вызов dismiss () , но он также вызовет ваш DialogInterface.OnCancelListener , если зарегистрирован.

Hide Этот метод скрывает диалог, но не закрывает его.

А подробнее см. здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...