Яка різниця між відхиленим або скасованим діалоговим вікном в Android?


193

Як і в заголовку, яка різниця між відхиленим або скасованим діалоговим вікном в Android?

Відповіді:


187

Зазвичай діалогове вікно закривається, коли його завдання закінчено, і воно видаляється з екрана. Діалогове вікно скасовується, коли користувач хоче вийти з діалогового вікна і натисне кнопку "Назад".

Наприклад, у вас є стандартне діалогове вікно "Так / Ні". Якщо користувач натискає "Ні", діалогове вікно закривається і значення "Ні" повертається абоненту. Якщо замість вибору "Так" чи "ні", користувач натискає "Назад", щоб вийти з діалогового вікна, а не зробити вибір, тоді діалогове вікно буде скасовано і значення, що повертається, не повертається.


Дякую за відповідь. Я намагаюся встановити, що станеться, якщо користувач натисне кнопку відміни на панелі вибору дати. Спочатку я спробував скористатися слухачем відхилення, і це спрацювало, але також сталося, якщо користувач обрав час. Тоді я спробував скасувати слухач, і він ніколи не вимикався, навіть якщо я натиснув скасувати. Ви знаєте, що мені робити?
Аал

2
Якщо ви використовуєте DatePickerDialog, вам слід використовувати OnDateSetListener, щоб отримувати сповіщення про зміну дати. Якщо хтось натисне кнопку "Скасувати", то її не зателефонують, і діалогове вікно вимкнеться самостійно. Для звичайного використання DatePickerDialog не потрібно встановлювати інших слухачів.
Лі

FYI, кнопка "назад" запускає як слухача скасування, так і слухача відхилення.
Урбан

28

dismissце те, що вам потрібно явно зателефонувати у свій код, як правило, щоб відповісти на подію натискання кнопки у вашому Dialog. Якщо ви віддаєте перевагу, ви можете зателефонувати dismissDialogв те Activity, що в свою чергу дзвонить dismissна Dialog.

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

Якщо ви використовуєте a DatePicker, все це все ще має місце. Як сказав @Lee, він DatePickerDialog.OnDateSetListenerпросто виявляє, коли користувач обрав дату з DatePicker.

Android Developer Reference надає більше інформації про Dialogс.


Ви також можете викликати cancelметод. Для зменшення розміру та скасування є два різні слухачі.
creativecreatorormaybenot

12

DismissВиклик відхилення видаляє діалогове вікно з екрану. Цей спосіб можна безпечно використовувати з будь-якої нитки. Зауважте, що вам не слід перекривати цей метод для очищення, коли діалогове вікно закрито, а замість цього застосувати його в onStop .

CancelВикликаючи скасувати, скасовує діалогове вікно. Це по суті те саме , що виклик dismiss () , але він також зателефонує вашому DialogInterface.OnCancelListener , якщо він зареєстрований.

Hide Цей метод приховує діалогове вікно, але не відхиляйте його.

А докладніше дивіться тут

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.