ventana tipos studio personalizado emergente ejemplo edittext dialogos dialogo custom cuadro crear con botones android button dialog back

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; } });