¿Existe un oyente de Back (en el dispositivo) predeterminado en Android?
-
25-09-2019 - |
Pregunta
Tengo dos actividades A y B. Cuando hago clic en el botón en A que muestra B. Cuando hago clic en el botón en B, se retrocede a A. Establecí el método OverridePendingTransition después del método final (). Funciona correctamente. Pero en caso de que la actividad actual sea B. En ese momento hago clic en el botón de retroceso predeterminado en el dispositivo. Muestra la transición derecha a izquierda para mostrar la actividad A.
¿Cómo puedo escuchar esa tecla de respaldo predeterminada en el dispositivo?
EDITAR:
Log.v(TAG, "back pressed");
finish();
overridePendingTransition(R.anim.slide_top_to_bottom, R.anim.hold);
Solución
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// do something on back.
return true;
}
return super.onKeyDown(keyCode, event);
}
El siguiente enlace es una explicación detallada sobre cómo manejar los eventos clave de Back, escritos por los propios desarrolladores de Android:
Otros consejos
Para Android 2.0 y posterior, hay un método específico en la clase de actividad:
@Override
public void onBackPressed() {
super.onBackPressed();
// Do extra stuff here
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
//Do stuff
}
return super.onKeyDown(keyCode, event);
}
Se puede encontrar más información sobre las cosas de la llave posterior: http://android-developers.blogspot.com/2009/12/back-and--tom-hard-keys-three-stories.html
Utilizo este código en una actividad con un reproductor multimedia. Necesitaba detener la reproducción cuando el usuario presionó el botón Atrás pero aún así poder volver a la actividad anterior.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// do something on back.
try{
mp.stop(); //this line stops the player
return super.onKeyDown(keyCode, event);//this line does the rest
}
catch(IllegalStateException e){
e.printStackTrace();
}
return true;
}
return super.onKeyDown(keyCode, event); //handles other keys
}