No se puede capturar el evento del botón Volver de Android

Estoy tratando de capturar el evento de botón de nuevo para Android. Sé que hay mucho sobre esto ya en los formularios, sin embargo, mi código no funciona como los ejemplos dados. Aquí está mi fragmento de código para capturar el evento:

@Override public boolean onKeyDown(int keyCode, KeyEvent event){ if(keyCode == KeyEvent.KEYCODE_BACK){ Log.d(TAG, "back key captured"); return true; } return super.onKeyDown(keyCode, event); } 

También he intentado esto:

 @Override public void onBackPressed(){ Log.d(TAG, "in onBackPressed"); finish(); } 

La salida de LogCat que cualquiera de los eventos se disparó no aparece. Alguien sabe una posible razón para esto?

Gracias.

Otro método es anular el método public void onBackPressed() . Es más sencillo y más fácil de hacer.

Para recibir un evento de teclado, una Vista debe tener el foco. Para forzar este uso:

 view.setFocusableInTouchMode(True); view.requestFocus(); 

¿Está el teclado suave mostrando? Esta vista captura la tecla de retroceso primero para descartarla antes de que su propio código pueda manejarla.

Esto funciona para mí

 private long lastBackPressTime = 0; @Override public void onBackPressed() { if (this.lastBackPressTime < System.currentTimeMillis() - 4000) { Toast.makeText(this, R.string.backButtonWarning, 4000).show(); this.lastBackPressTime = System.currentTimeMillis(); } else { super.onBackPressed(); } } 

Últimamente ha estado experimentando una enorme cantidad de problemas debido al complemento de ADT, que generan el archivo de recursos apropiado (R). Así que comprueba que has limpiado tu proyecto

Mi situación puede ser inusual, pero tuve el mismo comportamiento, así que pensé compartirlo con la clase! La razón terminó siendo que dentro de mi evento onResume () para la Actividad, estaba iniciando otra actividad. Esa actividad se estaba terminando antes de que alguna vez mostrara alguna interfaz de usuario, pero significaba que el "onResume" para mi actividad principal se llamaba continuamente cada vez que terminaba la subactividad, y todos los eventos del botón de retorno parecían desaparecer en la subactividad.

Aquí es cómo implementé el manejo del evento presionado por la tecla de retroceso.

 /** * onKeyDown method * * Executes code depending on what keyCode is pressed. * * @param int keyCode * @param KeyEvent * event KeyEvent object * * @return true if the code completes execution, false otherwise * */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: Log.d(TAG, "back key captured"); this.onBackPressed(); //You could also use this.moveTaskToBack(true) to return to the Home screen return true; default: return super.onKeyDown(keyCode, event); } }// end onKeyDown 
  • ¿Cómo detectar pulsaciones de teclas de caracteres?
  • Android: escucha de las teclas duras en el fondo
  • Para Emacs, viaje largo para usar la tecla CTRL en Android
  • Keyevent android teléfono bloqueado
  • Android onkey - dispatchKeyEvent sin disparar
  • Enviar una combinación de teclas (clave meta y clave) a través de la API de Android
  • Teclas especiales KeyEvent (como silenciar)
  • Android: ¿Hay una manera de simular D-Pad Events (API 10)?
  • DispatchKeyEvent desde Service
  • Permiso: INJECT_EVENTS para Instrumenation a otras aplicaciones
  • Android: captura los eventos clave "Hecho" y "Introducir" en el teclado virtual
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.