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.

¿Algúna idea de cómo arreglar esto? Busqué durante unos 30 minutos y no pude encontrar a nadie más con este problema.

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.

  • Cómo obtener clics de botón en fragmento de host del fragmento de diálogo
  • AlertDialog - no descartar en clic de artículo
  • Android AlertDialog.Builder setSingleChoiceItems con estilo de celda personalizado
  • AlertDialog dentro de alertdialog android
  • Android AlertDialog reglas setView
  • Error de Android: no se puede agregar ventana - el símbolo nulo no es para una aplicación
  • Texto oscuro sobre fondo oscuro en AlertDialog con Theme.Sherlock.Light
  • ¿Cómo comprobar si AlertDialog.builder está mostrando y cancelando si está mostrando?
  • AlertDialog dentro de onClickListener
  • Por qué la convención de denominación extraña de "AlertDialog.Builder" en lugar de "AlertDialogBuilder" en Android
  • Cómo agregar dos campos de texto de edición o vistas en un cuadro AlertDialog?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.