Відповіді:
Зазвичай діалогове вікно закривається, коли його завдання закінчено, і воно видаляється з екрана. Діалогове вікно скасовується, коли користувач хоче вийти з діалогового вікна і натисне кнопку "Назад".
Наприклад, у вас є стандартне діалогове вікно "Так / Ні". Якщо користувач натискає "Ні", діалогове вікно закривається і значення "Ні" повертається абоненту. Якщо замість вибору "Так" чи "ні", користувач натискає "Назад", щоб вийти з діалогового вікна, а не зробити вибір, тоді діалогове вікно буде скасовано і значення, що повертається, не повертається.
dismissце те, що вам потрібно явно зателефонувати у свій код, як правило, щоб відповісти на подію натискання кнопки у вашому Dialog. Якщо ви віддаєте перевагу, ви можете зателефонувати dismissDialogв те Activity, що в свою чергу дзвонить dismissна Dialog.
cancelМетод виконується тільки коли він явно викликається в коді, або коли користувач натискає кнопку НАЗАД , коли ваш скасовує Dialogвідкритий (як зазначено @Lee).
Якщо ви використовуєте a DatePicker, все це все ще має місце. Як сказав @Lee, він DatePickerDialog.OnDateSetListenerпросто виявляє, коли користувач обрав дату з DatePicker.
Android Developer Reference надає більше інформації про Dialogс.
cancelметод. Для зменшення розміру та скасування є два різні слухачі.
DismissВиклик відхилення видаляє діалогове вікно з екрану. Цей спосіб можна безпечно використовувати з будь-якої нитки. Зауважте, що вам не слід перекривати цей метод для очищення, коли діалогове вікно закрито, а замість цього застосувати його в onStop .
CancelВикликаючи скасувати, скасовує діалогове вікно. Це по суті те саме , що виклик dismiss () , але він також зателефонує вашому DialogInterface.OnCancelListener , якщо він зареєстрований.
Hide Цей метод приховує діалогове вікно, але не відхиляйте його.
А докладніше дивіться тут