2012-01-31 14 views
5

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.

Respuesta

0

Anular onKeyDown en su actividad y return false. Para que el evento se propague a otras vistas también.

Si manejó el evento, devuelva verdadero. Si desea permitir que el evento sea manejado por el siguiente receptor, devuelva falso.

+2

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. –

+0

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é! :) –

+2

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

0

se puede tratar de utilizar

setFocusableInTouchMode(true) 
setFocusable(true) 
requestFocus() 

en su CustomView

Cuestiones relacionadas