He creado un juego simple de Android, basado en la muestra Lunar Lander, y tengo un problema con el manejo de eventos clave. Cuando se inicia la actividad, las únicas teclas que onKeyDown o onKeyUp reciben son las teclas dpad arriba/abajo/izquierda/derecha. Ni las teclas de menú, atrás ni dpad_center activan métodos onKey. Sin embargo, una vez que he pulsado uno de los botones de dpad arriba/abajo/izquierda/derecha, presionar las teclas de menú, atrás o dpad_center activan estos métodos. No recibo ningún error ni indicio de lo que está pasando mal.onKeyDown no siempre se llama en la aplicación de Android
Es posible que el enfoque esté mal configurado: la actividad se inicia desde un botón en la pantalla, por lo que podría estar en modo de pantalla táctil. Si ese es el caso, ¿no deberías tocar el botón Atrás para que me ponga en el modo de enfoque correcto para poder ver el evento?
Estoy usando el emulador de SDK-1.5r3. Todavía no he podido probar esto en un teléfono real. Aquí está mi onKeyDown.
public boolean onKeyDown(int keyCode, KeyEvent msg)
{
Log.d(TAG, "onKeyDown: " + keyCode);
return super.onKeyDown(keyCode, msg);
}
Gracias
Matt
lo fue en la vista - pero mientras que la comprobación de esto, me di cuenta que no tenía setFocusableInTouchMode habilitado - agregando que en solucionado el problema. –
Ah, genial. Lamento haberme perdido el problema real, pero me alegro de haber podido ayudar. – haseman
Intenté esto en un fragmento pero el onKeyDown() de mi vista nunca se llama aunque he establecido su capacidad de enfoque en verdadero: 'searchView.setFocusable (true); searchView.setFocusableInTouchMode (true); '. Sin embargo, se llama a onKeyDown() de la actividad, pero desafortunadamente no para la tecla de retroceso. – faizal