Android que promueve un AlertDialog onBackPressed
Estoy tratando de terminar mi menú principal en mi aplicación. Pensé que sería un simple toque agradable para agregar un AlertDialog en el método OnBackPressed. Sin embargo, por alguna razón estoy recibiendo todo tipo de errores.
Creé el AlertDialog en el OnBackPressed y lo demuestro pero la aplicación apenas cierra cuando presiono el botón trasero y consigo los errores que dicen que la ventana está goteando.
- Debe llamar a removeView () en el padre del niño primero con AlertView
- Desenfocar el fondo detrás de AlertDialog
- Eliminar título de DatePickerDialog
- ¿Por qué el cuadro de diálogo Alerta de Android es NEGRO?
- Desactivación del cuadro de diálogo al tocar fuera
¿Algúna idea de cómo arreglar esto? Busqué durante unos 30 minutos y no pude encontrar a nadie más con este problema.
- ¿Cómo aplicar el tema ligero para la actividad y mantener el tema oscuro para los diálogos al mismo tiempo?
- Android - ¿Cómo puedo desplegar este cuadro de diálogo de alerta?
- Cómo descartar AlertDialog en android
- DatePickerDialog muestra el selector del año primero
- ¿Por qué Android NoSuchMethodException se produce en el setOnDismissListener de AlertDialog.Builder
- ListView personalizado para AlertDialog
- Cómo cambiar el cuadro de diálogo de alerta divider color android
- Cómo crear un diálogo de alerta con una ruleta
Trate de no llamar a super.OnBackPressed () , este código ayuda shoul:
@Override public void onBackPressed() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Are you sure you want to exit?") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { MyActivity.this.finish(); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create(); alert.show(); }
Creé el AlertDialog en el OnBackPressed y lo demuestro pero la aplicación apenas cierra cuando presiono el botón trasero y consigo los errores que dicen que la ventana está goteando.
Si dentro de su OnBackPressed
está llamando a super.OnBackPressed()
entonces la aplicación terminará, ya que es lo que hace la implementación base de OnBackPressed
. No llame al método super
y la aplicación no se cerrará.
Si desea llamar a super.onBackPressed () utilice este código:
@Override public void onBackPressed() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Are you sure you want to exit?") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { //finish(); MyActivity.this.onSuperBackPressed(); //super.onBackPressed(); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create(); alert.show(); /* if (handleCancel()){ super.onBackPressed(); } */ } public void onSuperBackPressed(){ super.onBackPressed(); }
Acabo de agregar un nuevo método público onSuperBackPressed
con el super
método a MyActivity.
Gracias a K_Anas por proporcionar la excelente idea.