android - tipos - ¿Cómo manejar el botón Atrás en el cuadro de diálogo?
tipos de dialogos en android studio (6)
Estoy desarrollando una aplicación que cuando se presiona el botón, abre un cuadro de 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?
Parece que quieres configurar OnCancelListener cuando creas el Diálogo. Se parece a esto:
dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
//do whatever you want the back key to do
}
});
Prueba esto
new AlertDialog.Builder(this).setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
Logger.d(TAG, "--------- Do Something -----------");
return true;
}
return false;
}
})
Si está usando un DialogFragment, por lo que puedo decir, la forma correcta de hacerlo es anular el comando de Cancelar ()
Noté que setOnCancelListener
no funciona, y setOnKeyListener
funciona, pero para mí tiene el efecto secundario divertido de que se traga todas las teclas si su diálogo tiene un texto de edición.
es porque cuando su Diálogo se abre, su ventana navega enfocada a Diálogo. Entonces, ahora tiene que manejar la key
en su Diálogo.
OnCancel
anular el método OnCancel
. Este método llama al Tecla Atrás para presionar. Aquí hay un código que funciona perfecto para mí.
AlertDialog alertDialog;
alertDialog.setOnCancelListener(new OnCancelListener()
{
@Override
public void onCancel(DialogInterface dialog)
{
// TODO Auto-generated method stub
dialog.dismiss();
}
});
Espero que esto te ayude y acepta si es útil para ti.
Gracias..
dialog.setOnKeyListener(new Dialog.OnKeyListener() {
@Override
public boolean onKey(DialogInterface arg0, int keyCode,
KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
dialog.dismiss();
}
return true;
}
});