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:
- Enviar una consulta cuando haga clic en el botón de búsqueda en el teclado
- Iniciar chat de vídeo sin interacción del usuario - Android
- Eventos clave en TabActivities?
- ¿Qué desencadena (o genera) KeyEvent.ACTION_MULTIPLE?
- EditText no recibe eventos clave TAB - stock soft vk
@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.
- Leer eventos de teclado en Android WebView
- ¿Es posible crear un servicio Android que escuche las pulsaciones de teclas de hardware?
- Fake KeyEvent no funciona * exactamente * como el botón "real". ¿Por qué?
- Simulación de combinación de pulsadores de teclas del terminal ADB
- ¿Por qué no se llama al método dispatchKeyEvent?
- KeyCode en android es siempre 229
- Escuchar Webview Key Events desde el teclado del software en la actividad de Android
- Android: escucha la tecla de encendido
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 borrar la pila trasera de fragmentos de Android sin reanudar fragmentos intermedios
- Android TextView habilita las etiquetas LinkiFy y Href