2010-09-01 37 views
21

Estoy escribiendo una aplicación que tendrá dos actividades, cuando el usuario presione el botón Atrás en la segunda actividad, aparecerá un cuadro de diálogo solicitando al usuario que confirme la acción. Entonces, ¿cómo puedo interceptar esto? Tengo serias dudas acerca de esto porque el backstack es una parte del sistema operativo en sí. ¿Alguien encontró una solución alternativa?Interceptar el botón Atrás

+0

Piensa bien acerca de cómo hacer esto. Este es un comportamiento de Android no estándar y puede molestar a sus usuarios. ¿Estás tratando de evitar que pierdan datos no guardados? – I82Much

+0

Sí exactamente @ I82Much! –

Respuesta

50

En una actividad que sólo puede anular

onBackPressed()

edición: que es lvl API 5+:/a 4 y por debajo de lo que tienes que anular onKeyDown()

+0

Bien, gracias @schwiz –

10

Simplemente anule el método onKeyDown en su actividad y busque el botón Atrás. Devuelve verdadero para que el evento se consuma.

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     //Do something here 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

+1, he hecho esto antes y definitivamente funciona, aunque cuando lo usé, era antes de entender la noción de actividades múltiples ... –

+0

// Haz algo aquí (estoy tratando de mostrar un brindis por mi código de prueba) no funciona para mí. Y cuando presiono el botón Atrás, no pasa nada. –

+0

Mi error, no llamé a Toast.show(). Código de trabajo. Gracias @skorulis –

3

Como señaló schwiz, querrás anular el método onBackPressed() en tu clase de actividad (http://developer.android.com/reference/android/app/Activity.html#onBackPressed()).

Solo quería agregar que si deseaba en algún momento continuar o acceder a la operación de respaldo estándar (después de decir, mostrar un cuadro de diálogo), simplemente llame al super.onBackPressed() o ActivityName.super.onBackPressed() desde cualquier parte de la Actividad.

Cuestiones relacionadas