2010-04-07 5 views
18

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, retrocede a A. establecí el método de anulaciónPendingTransition después del método finish(). funciona correctamente pero en caso de que la Actividad actual sea B. en ese momento hago clic en el botón Atrás predeterminado en el dispositivo. muestra la transición de derecha a izquierda para mostrar la Actividad A.¿hay un escucha predeterminado de la tecla de retroceso (en el dispositivo) en Android?

¿Cómo puedo escuchar esa tecla predeterminada en el dispositivo?

EDIT:

Log.v(TAG, "back pressed"); 
finish(); 
overridePendingTransition(R.anim.slide_top_to_bottom, R.anim.hold); 

Respuesta

39
@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 controlar eventos de vuelta clave, escritas por los propios desarrolladores de Android:

Using the back key

+0

no funciona .... no puedo imprimir una declaración en el mismo logcat. – Praveen

+0

¿Podría editar su pregunta para mostrar el código con el que tiene problemas en este momento? Uno de nosotros podría ayudar –

+0

solo copie y pegue el fragmento de código en mi clase de actividad. simplemente reemplace el // hacer algo al reverso de mi fragmento de código de edición (vea la pregunta). – Praveen

2
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if(keyCode == KeyEvent.KEYCODE_BACK){ 
     //Do stuff 
    } 

    return super.onKeyDown(keyCode, event); 
} 
21

para y roid 2.0 y posterior, hay un método específico en la clase Actividad:

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    // Do extra stuff here 
} 
+2

Este es el enfoque preferido para Android 2.x. Sin embargo, para versiones anteriores de Android, aún necesita usar 'onKeyDown()'. – CommonsWare

+0

no funciona ... no puedo imprimir una declaración en logcat. yo había usado ambos métodos – Praveen

0

utilizo este código en una actividad con un reproductor de medios. Necesitaba detener la reproducción cuando el usuario presionó el botón Atrás, pero aún así puede 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 
} 
Cuestiones relacionadas