¿Cuál es la diferencia entre descartar o cancelar un diálogo en Android?

193

Como dice el título, ¿cuál es la diferencia entre descartar o cancelar un diálogo en Android?

Aal
fuente

Respuestas:

187

Normalmente, un cuadro de diálogo se cierra cuando finaliza su trabajo y se elimina de la pantalla. Un diálogo se cancela cuando el usuario quiere escapar del diálogo y presiona el botón Atrás.

Por ejemplo, tiene un cuadro de diálogo estándar Sí / No en la pantalla. Si el usuario hace clic en No, el cuadro de diálogo se cierra y el valor de No se devuelve a la persona que llama. Si en lugar de elegir Sí o No, el usuario hace clic en Atrás para escapar del cuadro de diálogo en lugar de hacer una elección, el cuadro de diálogo se cancela y no se devuelve ningún valor a la persona que llama.

Sotavento
fuente
Gracias por la respuesta. Estoy tratando de configurar lo que sucede si el usuario presiona el botón cancelar en un selector de fechas. Primero intenté usar un oyente de despido, y eso funcionó, pero también sucedió si el usuario eligió un momento. Luego probé un oyente de cancelación, y nunca sonó, incluso si presioné cancelar. ¿Sabes lo que debo hacer?
Aal
2
Si está usando un DatePickerDialog, debe usar un OnDateSetListener para recibir notificaciones cuando cambie la fecha. Si alguien hace clic en el botón cancelar ... no se llamará y el diálogo desaparecerá por sí solo. Para usos normales de DatePickerDialog, no necesita configurar otros oyentes.
Lee
Para su información, el botón de retroceso activa tanto la escucha de cancelación como la de descarte.
Urbano
28

dismisses algo que debe llamar explícitamente en su código, generalmente para responder a un evento de clic en un botón en su Dialog. Si lo prefiere, puede llamar dismissDialogal Activity, que a su vez llamará dismissal Dialog.

El cancelmétodo solo se ejecuta cuando se Dialoginvoca explícitamente en su código, o cuando el usuario presiona el botón ATRÁS cuando su cancelable está abierto (como señaló @Lee).

Si está utilizando a DatePicker, entonces todo esto sigue siendo el caso. Como dijo @Lee, DatePickerDialog.OnDateSetListenersolo detecta cuándo el usuario ha elegido una fecha de DatePicker.

La Referencia para desarrolladores de Android proporciona más información sobre Dialogs.

hotshot309
fuente
También puedes llamar al cancelmétodo. Hay dos oyentes diferentes para atenuar y cancelar.
creativecreatorormaybenot
12

DismissLlamar al despido elimina el diálogo de la pantalla. Este método se puede invocar de forma segura desde cualquier subproceso. Tenga en cuenta que no debe anular este método para realizar la limpieza cuando se cierra el cuadro de diálogo, sino implementarlo en onStop .

CancelAl llamar a cancelar, se cancela el diálogo. Esto es esencialmente lo mismo que llamar a despedir () , pero también llamará a su DialogInterface.OnCancelListener , si está registrado.

Hide Este método oculta el diálogo, pero no lo descarta.

Y para más ver aquí

ucMedia
fuente