Qual è la differenza tra una finestra di dialogo che viene respinta o annullata in Android?


194

Come dice il titolo, qual è la differenza tra una finestra di dialogo che viene respinta o annullata in Android?

Risposte:


188

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.


Grazie per la risposta. Sto cercando di impostare cosa succede se l'utente preme il pulsante Annulla su un datepicker. Per prima cosa ho provato a usare un listener di licenziamento e ha funzionato, ma è successo anche se l'utente ha scelto un orario. Quindi ho provato un listener di annullamento e non è mai andato via, anche se ho premuto Annulla. Sai cosa dovrei fare?
Aal,

2
Se stai usando un DatePickerDialog, dovresti usare un OnDateSetListener per ricevere una notifica quando la data cambia. Se qualcuno fa clic sul pulsante Annulla ... non verrà chiamato e la finestra di dialogo scompare da sola. Per gli usi normali di DatePickerDialog, non è necessario impostare altri listener.
Lee,

Cordiali saluti, il pulsante Indietro attiva sia il listener di annullamento che il listener di rifiuto.
Urban

28

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.


Puoi anche chiamare il cancelmetodo Esistono due diversi ascoltatori per la riduzione e la cancellazione.
creativecreatorormaybenot

12

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.