Risposte:
In genere, una finestra di dialogo viene chiusa al termine del lavoro e viene rimossa dallo schermo. Una finestra di dialogo viene annullata quando l'utente desidera uscire dalla finestra di dialogo e preme il pulsante Indietro.
Ad esempio, sullo schermo è presente una finestra di dialogo Sì / No standard. Se l'utente fa clic su No, la finestra di dialogo viene chiusa e il valore per No viene restituito al chiamante. Se invece di scegliere Sì o No, l'utente fa clic su Indietro per uscire dalla finestra di dialogo anziché effettuare una scelta, la finestra di dialogo viene annullata e nessun valore viene restituito al chiamante.
dismissè qualcosa che devi chiamare esplicitamente nel tuo codice, di solito per rispondere a un evento click su un pulsante nel tuo Dialog. Se preferisci, puoi chiamare dismissDialogil Activity, che a sua volta chiamerà dismissilDialog .
Il cancelmetodo viene eseguito solo quando viene esplicitamente chiamato nel codice o quando l'utente preme il pulsante INDIETRO quando è annullabileDialog è aperto (come notato da @Lee).
Se stai usando un DatePicker, allora tutto ciò è ancora vero. Come ha detto @Lee, DatePickerDialog.OnDateSetListenerrileva solo quando l'utente ha scelto una data dalDatePicker .
La Guida per gli sviluppatori Android fornisce ulteriori informazioni su Dialogs.
cancelmetodo Esistono due diversi ascoltatori per la riduzione e la cancellazione.
DismissLa chiamata al licenziamento rimuove la finestra di dialogo dallo schermo. Questo metodo può essere invocato in modo sicuro da qualsiasi thread. Nota che non dovresti ignorare questo metodo per eseguire la pulizia quando la finestra di dialogo viene chiusa , invece implementala in onStop .
CancelLa chiamata all'annullamento annulla la finestra di dialogo. Questo è essenzialmente lo stesso di chiamare dismiss () , ma chiamerà anche DialogInterface.OnCancelListener , se registrato.
Hide Questo metodo nasconde la finestra di dialogo, ma non la chiude.
E per di più vedi qui