¿Cómo puedo anular Dialog
onBackPressed
para cerrar el cuadro de diálogo y llamar al finish()
en el Activity
en el que se encuentra?Anular el cuadro de diálogo en Retroceder()?
24
A
Respuesta
50
Puede utilizar setOnCancelListener
:
dialog.setOnCancelListener(new DialogInterface.OnCancelListener()
{
@Override
public void onCancel(DialogInterface dialog)
{
MyActivity.this.finish();
}
});
que necesita para terminar su única actividad. El diálogo se cerrará automáticamente.
22
dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
dialog.cancel();
return true;
}
return false;
}
})
2
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
return new Dialog(getActivity(), getTheme()){
@Override
public void onBackPressed(){
// dismiss();
// activityReference.finish();
}
};
}
0
en mi caso yo uso DialogFragment, que sigue siendo un diálogo .. así que overriden onCancel()
en mi diálogo, y reacciona como onBackPressed()
de la Actividad cada vez que haga clic en el botón de retroceso cuando es de diálogo mostrado.
@Override
public void onCancel(DialogInterface dialog)
{
super.onCancel(dialog);
Log.i("RecDialog.onCancel()", "onCancel");
}
Espero que haya ayudado.
0
Finalmente agregué un oyente clave a mi diálogo para escuchar la tecla Atrás. No es tan elegante como anular onBackPressed()
pero funciona. Aquí está el código:
dlgDetails = new AlertDialog.Builder(this)
.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey (DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK &&
event.getAction() == KeyEvent.ACTION_UP &&
!event.isCanceled()) {
dialog.cancel();
showDialog(DIALOG_MENU);
return true;
}
return false;
}
})
//(Rest of the .stuff ...)
Cuestiones relacionadas
- 1. jQuery Diálogo desplazarse al elemento en el cuadro de diálogo
- 2. Aplicar un estilo a todos los cuadros de diálogo (cuadro de diálogo spinner, cuadro de diálogo de alerta, etc.)
- 3. cuadro de diálogo jQuery
- 4. ¿Por qué cerrar el cuadro de diálogo secundario anidado también cierra el cuadro de diálogo primario?
- 5. datepicker en JQuery UI El cuadro de diálogo muestra el calendario en el cuadro de diálogo abierto
- 6. Personalizar el cuadro de diálogo onbeforeunload
- 7. Establecer el progreso del cuadro de diálogo
- 8. Cuadro de diálogo de alerta en android
- 9. Tkinter askquestion cuadro de diálogo
- 10. Cómo mostrar el icono apropiado en el cuadro de diálogo
- 11. En el cuadro de diálogo de la IU de jquery, es posible colocar un cuadro de diálogo modal sobre otro cuadro de diálogo modal
- 12. Abrir nuevo cuadro de diálogo desde un cuadro de diálogo en qt
- 13. Desvanecimiento en superposición en el cuadro de diálogo modal
- 14. Etiquetado GTK en un cuadro de diálogo
- 15. Mensaje de centro en el cuadro de diálogo de Android
- 16. Flecha en el cuadro de diálogo de jQuery
- 17. Título de conjunto dinámico en el cuadro de diálogo
- 18. Abrir el cuadro de diálogo de JQuery Ui en MousePosition
- 19. Guardar el cuadro de diálogo de archivo en MVC
- 20. Diseño del título del cuadro de diálogo anterior en Android
- 21. Desactivar el cuadro de diálogo "Agregar naturaleza Xtext" en Eclipse
- 22. jQuery: desvanecimiento en el cuadro de diálogo modal
- 23. ¿Cómo cerrar jQuery Dialog en el cuadro de diálogo?
- 24. BlockUI tarda demasiado en bloquear el cuadro de diálogo jQuery
- 25. Abrir el cuadro de diálogo en WPF MVVM
- 26. Eclipse: oculta rutas en el cuadro de diálogo "Abrir recurso"
- 27. Personalizar el cuadro de diálogo Agregar/Editar en jqGrid
- 28. Cambiar la fuente en el cuadro de diálogo CHOOSECOLOR
- 29. Android: timepicker y datepicker en el mismo cuadro de diálogo
- 30. Reabra el cuadro de diálogo modal en MFC
+1 para mí apuntando en la dirección correcta, el efecto que estaba buscando es la onDismissListener pero lo suficientemente cerca :-) – Skizit
onDismissListener sobrescribir los botones positivos y negativos también. Por lo tanto, si está buscando sobrescribir y presionar presionando cualquier lugar fuera del diálogo, onCancelListener es mejor. – thinzar00