Deseo detectar el evento Back Key en mi CustomView (por ejemplo, EditText). En muchos casos, se ha logrado anulando el onKeyDown()
o dispatchKeyEvent()
, con la condición de que mi CustomView obtenga el foco.Cómo detectar la tecla Atrás en mi CustomView
CustomView.java
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK) {
.....
return true;
}else{
return super.onKeyDown(keyCode, event);
}
}
Sin embargo, si una actividad que incluye la CustomView también es reemplazar el onKeyDown()
o dispatchKeyEvent()
, no podría trabajar mucho. Es decir, la Actividad ha obtenido el Back-KeyEvent antes de que tenga CustomView.
Preferentemente quiero atrapar el Back-KeyEvent antes que la actividad.
por favor dígame algunas ideas sobre este problema. Gracias.
No es del todo cierto. El método 'onKeyDown' en' Activity' se invoca cuando se presionó una tecla y no se maneja con ninguna de las vistas dentro de la actividad. Primero se llama aKeyDown en View enfocado, luego en Activity, luego en el resto. –
Pero en la medida en que regresemos en falso, irá al siguiente receptor. ¿Derecha? Aunque la respuesta de @MoshErsan puede ser preferible para hacer esto. Pero como se mencionó en la pregunta, onKeyDown ya está anulado en Activity, por lo que debes devolver false allí, ¡sin importar qué! :) –
Es como dices. Por su favor, podría entender el orden en que se llaman los métodos. De hecho, cuando lo intenté, era 'Ver # onKeyPreIme',' Activity # dispatchKeyEvent', 'View # dispatchKeyEvent', 'View # onKeyDown', y finalmente,' Activity # onKeyDown'. ¡Gracias! – Gottie