2011-06-30 10 views
7

Aquí está mi problema.Android manejo de evento de tecla mientras el menú está visible

Anulo la tecla Bajar volumen para que mi aplicación realice una tarea específica mientras está presionada durante un tiempo prolongado, funciona bien normalmente. Puedo interceptar teclas y eventos clave para eso.

Los eventos de escucha de clave están escritos en un componente personalizado particular y no en la actividad donde se utiliza este componente.

El problema surge cuando presiono el botón de menú mientras presioné la tecla para bajar el volumen, y cuando lo suelto mientras se muestra el menú, no puedo interceptar el evento de activación de la tecla.

¿Puede explicarnos cuál es el motivo? Y si este problema se puede resolver o no?

Gracias.

Respuesta

5

Cuando se hace clic en el Menú, cambia el foco de su ventana. Enfoque ven a la vista de menú. Debido a esto onKeyDown() no funciona porque onKeyDown funcionará si el foco de la pantalla estará en la vista o actividad que está en la parte superior.

Utilice el código siguiente para conocer el enfoque de la pantalla

@Override 
    public void onWindowFocusChanged(boolean hasFocus) { 
     // TODO Auto-generated method stub 
     System.out.println("....window focus changed.."); 
     super.onWindowFocusChanged(hasFocus); 
    } 
+0

puedo determinar qué pantalla tiene el foco ... Incluso he cambiado de enfoque con 'this.requestFocus()', pero esta sugerencia no lo hace work ... volume down key disminuye el volumen [comportamiento predeterminado del sistema] en lugar del comportamiento específico de la aplicación. – Prasham

+0

Creo que respondió la pregunta correctamente, que fue por qué sucede, no cómo resolverla. Si el sistema de menú tiene control y enfoque, su actividad no recibirá las entradas clave. – Idistic

Cuestiones relacionadas