2011-10-21 10 views

Respuesta

41

Seguimiento del código fuente del 5.1 Source for the View Class. Parece que dispatchKeyEvent() es el primer método llamado por el sistema. Sobrecargarlo evitará que se invoquen todos los eventos clave a menos que se llame a la versión base.

dispatchKeyEvent() El primer paso es intentar pasar el evento a onKeyListener si hay uno. Esto es cuando se llama onKey(). Si la implementación onKey() devuelve true, dispatchKeyEvent() volverá allí y no se invocarán otros eventos.

Si no hay onKeyListener o la onKeyListener 'onKey() método s volvió false, dispatchKeyEvent() luego llamar a la KeyEvent' dispatch() método s. Que a su vez llamará a todos los métodos en la interfaz KeyEvent.Callback en su vista. Esto incluye onKeyDown() y onKeyUp().

+0

no puede decirse nada mejor! – faizal

+0

¡Gran explicación! – ForeverLearning

+0

Entonces, en lugar de usar tanto 'onKeyDown' como' onKeyUp', ¿podría simplemente usar 'dispatchKeyEvent'? ¿Esto tiene algún inconveniente? Tenía que hacer esto, porque 'onKeyDown' no se activaría para la mayoría de las teclas, por alguna razón. Cuando cambié a 'dispatchKeyEvent', funcionó. – keinabel

Cuestiones relacionadas