2011-10-21 76 views

回答

41

追踪5.1 Source for the View Class的源代码。看起来dispatchKeyEvent()是系统调用的第一种方法。重载它将阻止任何和所有关键事件被调用,除非调用基础版本。

dispatchKeyEvent()的第一步是尝试将事件传递给onKeyListener(如果有的话)。这是在调用onKey()时。如果onKey()执行返回true,dispatchKeyEvent()将返回那里,其他事件将不会被调用。

如果没有onKeyListeneronKeyListeneronKey()方法返回false,然后dispatchKeyEvent()将调用KeyEventdispatch()方法。然后,它将依次调用视图中的KeyEvent.Callback界面中的所有方法。这包括onKeyDown()onKeyUp()

+0

不能说更好! – faizal

+0

很好的解释! – ForeverLearning

+0

因此,我可以不使用'onKeyDown'和'onKeyUp',而只是使用'dispatchKeyEvent'?这有什么缺点吗?我必须这样做,因为'onKeyDown'不会因为某些原因而触发大部分的键。当我更改为'dispatchKeyEvent'时,它工作。 – keinabel

相关问题