Tratar de implementar una confirmación de salida en mi aplicación para Android

Ya he descubierto que no puede anular el botón Inicio de un teléfono Android. Se sale de la aplicación, siempre sale de la aplicación, y no se moleste con cualquier tipo de confirmación namby-pamby. Supongo que entiendo el razonamiento de Google – pero creo que es un poco miope …

De todos modos, (antes de que me enteré sobre el botón Inicio), configuro mi aplicación para que el usuario pueda salir de la aplicación a través del menú Opciones – usando onCreateOptionsMenu () y un archivo XML, configuro un simple menú emergente que se muestra cuando se presiona el botón Menú. Una de sus opciones es Exit, y funciona bien.

Sin embargo, se me ocurrió que podría ser una buena práctica agregar un diálogo de confirmación al proceso de salida (incluso si también podría considerarse superfluo). Por lo tanto, he creado un AlertDialog con el título "¿Quieres salir?" y botones Sí y No …

Los oyentes de clics para los botones son simples y sólo establece exitConfirm (un booleano) verdadero o falso. El código que maneja la opción de menú Salir entonces limpia después de mi aplicación y ejecuta finish () o no dependiendo del estado de exitConfirm …

Desafortunadamente, no funciona completamente … Todo el código de onOptionsItemSelected () para el caso de salida se ejecuta y ENTONCES se muestra el cuadro de diálogo !! Supongo que debería haberlo visto venir. Y supongo que si sigo golpeándolo, voy a encontrar una manera de lograr esto, pero pensé en pedir sugerencias a la comunidad – así que, ¿alguien tiene una sugerencia para una manera de salir sin problemas de una aplicación de Android en un manera que incluye el paso de obtener la confirmación del usuario ??

Gracias, R.

En primer lugar, esta es una práctica terrible. Pedir confirmación puede ser una buena opción en una aplicación de escritorio, pero estás escribiendo una aplicación móvil. Es diferente. En realidad, tengo que escribir eso en negrita:

No está escribiendo una aplicación de escritorio.

Yo recomiendo: No hay pantalla de bienvenida. No hay opción de salida. Definitivamente no hay confirmación de salida. Aquí hay una excelente pregunta al respecto.

Para su pregunta: Use setPositiveButton y setNegativeButton para manejar los botones.

Respuesta corta:

Debe leer: Cuándo incluir un botón de salida en las aplicaciones de Android .

Respuesta larga: Puedes probar algo como esto:

 protected Dialog onCreateDialog(int id) { Dialog dialog = null; switch (id) { case MENU_QUIT: AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage(getString(R.string.main_screen_quit_text)) .setCancelable(false) .setPositiveButton( getString(R.string.main_screen_quit_yes), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { moveTaskToBack(true); } }) .setNegativeButton(getString(R.string.main_screen_quit_no), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create(); return alert; default: dialog = null; } return dialog; } 

Aparentemente, generalmente se considera que no es genial tener un botón de salida (o elemento de menú, o lo que sea) en tu aplicación de Android. Aparentemente, esto se debe a que su aplicación no sale realmente. Es sólo minimizado fuera del camino, y presumiblemente, el sistema operativo se encargará de él eventualmente.

Sin embargo, si lo que estás haciendo requiere algún nivel de limpieza cuando hayas terminado de hacerlo, esto es lo que creo que sé acerca de eso:

  1. Preste mucha atención a los diversos "Métodos de Ciclo de Vida" de Android, especialmente lo que los despide. Los métodos del ciclo de vida incluyen onCreate (), onStart (), onResume (), onPause () y onStop (). También hay onDestroy () – el complemento de onCreate () – pero no lo uso actualmente.

  2. Estos métodos se llaman en respuesta a varios eventos (como presionando el botón Inicio), pero lo que era importante en mi caso era que minimizar las llamadas de la aplicación onPause () y maximizarlo llama onResume (). Por lo tanto, necesitaba llamar a mis métodos de configuración y destrucción de esos lugares, y NO, por ejemplo, de onCreate () y onDestroy ().

  3. Hay una función llamada finish () que usé en todo mi código. Ahora es sólo en el método que se llama para manejar la pérdida de comunicación con mi dispositivo externo. Creo que los resultados de llamar finish () son exactamente los resultados de presionar el botón Inicio – por lo que, es sólo una manera de "presionar" el botón Inicio en el software.

La conclusión de largo alcance de todo esto es el botón de inicio en absoluto va a ocultar su aplicación de la vista del usuario. No se puede atrapar esta tecla de prensa – no importa lo mal que desea agregar algún tipo de, "¿Está seguro ??" funcionalidad. Sin embargo, la aplicación ha sido minimizada, no cerrada, y esto puede ser bueno o malo. Si ha escrito su código de inicio y apagado correctamente (y lo agregó a los métodos adecuados del ciclo de vida), no explotará las cosas y su usuario podrá volver fácilmente a su aplicación una vez que haya aprendido para pulsar prolongadamente el botón Inicio para ver una lista de aplicaciones minimizadas.

Con suerte, supongo, culparán su frustración en Google, y no en ti …

  • Android: Un buen menú de configuración (estándar)
  • Android: la visibilidad del sistema de pantalla completa atornilla las ventanas
  • ¿Cómo puedo obtener la altura y el ancho de la barra de navegación de Android mediante programación?
  • ¿Cómo puedo ejecutar el código en el hilo de la interfaz de usuario en una prueba de Android JUnit sin una actividad?
  • Android 4.2.1 carácter incorrecto kerning (espaciado)
  • Edición personalizada de Android con icono
  • ¿Qué tamaño de imagen debe colocarse en la carpeta neutra?
  • Cómo ocultar / mostrar el botón en el widget de pantalla de inicio de Android
  • Hacer algunas cosas de la interfaz de usuario de Android en un subproceso no UI
  • ¿Cómo alinear vistas en la parte inferior de la pantalla?
  • Aplicación de la plantilla de PSD de Photoshop para Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.