Estoy desarrollando una aplicación que cuando se presiona el botón, abre un diálogo con los botones Aceptar y Cancelar.
Funciona bien.
Cuando el usuario presiona el botón Atrás, estoy manejando esto de la siguiente manera
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
}
return super.onKeyDown(keyCode, event);
}
Pero el método anterior no se llama. ¿Cómo puedo manejar esto?
Respuestas:
fuente
Dialog
;finish()
ya se encarga de esto. Además, este método probablemente debería volverfalse
a poder capturar eventos clave en otros lugares&& event.getAction() == KeyEvent.ACTION_UP
a la respuesta. Sin él, el bloque de código se ejecutará dos veces. (Tecla ABAJO y tecla ARRIBA). En este ejemplo no es tan importante, pero para otras acciones además de terminar (), podría ser muy importante.dialog.dismiss()
producirá una pérdida de memoria.finish()
ydialog.dismiss()
se debe cambiar todo en el código de seguridad.Parece que desea configurar OnCancelListener cuando crea el cuadro de diálogo. Se parece a esto:
fuente
Necesita anular el
OnCancel
método. Este método requiere que se presione la tecla Atrás. Aquí está el código que funciona perfecto para mí.Espero que esto le ayude y acéptelo si le resulta útil.
Gracias..
fuente
Prueba esto
fuente
Si está utilizando un DialogFragment, por lo que puedo decir, la forma correcta de hacerlo es anular onCancel ()
Noté
setOnCancelListener
que no funciona, ysetOnKeyListener
funciona, pero para mí tiene el divertido efecto secundario de que se traga todas las teclas si su diálogo tiene un texto de edición.fuente
se debe a que cuando se abre su cuadro de diálogo, su ventana navega hacia el cuadro de diálogo. Entonces ahora tienes que manejar
key
tu Diálogo.fuente
key
en el diálogo.Anule el método
onBackPressed()
en su propio cuadro de diálogo y utilícelo en su código:Utilizar:
fuente
Este código funciona:
fuente