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);
¿Fue útil?

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:

Usando la llave posterior

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
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top