2011-10-21 23 views

答えて

41

5.1 Source for the View Classのソースコードのトレース。 dispatchKeyEvent()は、システムによって呼び出される最初のメソッドであるようです。オーバーロードすると、基本バージョンが呼び出されない限り、すべてのキーイベントが呼び出されなくなります。

dispatchKeyEvent()さんの最初の動きは、ある場合はonKeyListenerにイベントを渡そうとすることです。これはonKey()が呼び出されたときです。 onKey()の実装がtrueを返した場合は、dispatchKeyEvent()がそこに戻り、他のイベントは呼び出されません。

そこにはonKeyListenerではありませんかonKeyListener S dispatch()方法のonKey()方法は、その後KeyEvent呼び出しますfalsedispatchKeyEvent()を返さ 'の場合。次に、ビュー上のKeyEvent.Callbackインターフェイスのすべてのメソッドを呼び出します。これには、onKeyDown()onKeyUp()が含まれます。

+0

はそれほど良いとは言えません! – faizal

+0

すばらしい説明! – ForeverLearning

+0

したがって、 'onKeyDown'と' onKeyUp'の両方を使う代わりに 'dispatchKeyEvent'を使うこともできますか?これには欠点がありますか?なんらかの理由で、 'onKeyDown'がほとんどのキーに対してトリガされないので、私はこれをしなければなりませんでした。私は 'dispatchKeyEvent'に変更したときに動作しました。 – keinabel