2010-08-17 19 views
10

Mi aplicación encadena algunas actividades.Botón Atrás y última actividad

si presiona el botón Atrás, vuelve a las actividades anteriores y abandona repentinamente la aplicación.

así que necesito para mostrar un mensaje como "es lo que realmente desea salir" si es la última actividad en la pila

sé cómo reemplazar el botón de retroceso, pero no puedo imaginar cómo saber cuántos la actividad está en la historia

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
     // Is it the last activity on stack ? 
     // so show confirm dialog 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 

Por favor ayuda.

+0

¿Su aplicación no tiene una actividad principal de nivel de raíz donde puede suponer que es así? – iandisme

+6

Como nota al margen: desinstalaría cualquier aplicación que me molesta cuando intento salir con el botón Atrás. Esta es una aplicación de teléfono, no una gran aplicación de escritorio. – EboMike

+0

Estoy de acuerdo con EboMike. Secuestrar el botón Atrás no es una muy buena idea – Falmarri

Respuesta

14

se puede lograr que usando el final de la función()

public void finish() { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setMessage("do you really want to exit?"); 
     builder.setCancelable(false); 
     builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       quit(); 
      } 
     }); 
     builder.setNegativeButton("No", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       dialog.cancel(); 
      } 
     }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 
    } 

    public void quit() { 
     super.finish(); 
    }; 
0

usted no necesita saber cuántos están en la actividad history.You puede hacer esto way.Invoke el método de onBackPressed() cuando el botón de atrás es clickear. Luego, anule el método de finalizar() en su actividad principal para mostrar el cuadro de diálogo de confirmación. Debido a que el método InBackPressed() invoca el método finish(). Al retroceder a la actividad principal, se invoca el método de finalización(). el diálogo que ha anulado

Cuestiones relacionadas