2011-10-21 16 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

相關問題