4

矢印キー (上、下、右、左) によって生成されたイベントをキャッチして無効にしようとしています。以下のコード スニペットは、アクティビティ クラスの 1 つからのものです。

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if(event.getAction() == KeyEvent.KEYCODE_DPAD_DOWN) return true;
    else return true;
}

ただし、これらのコードを配置すると、キー ナビゲーションが機能します。どちらも機能しないアクティビティにキーリスナーを追加しようとしました。

ターゲット デバイスは、Android 2.2 バージョンがオンになっている Samsung GT-I5500 です。

何か不足していますか?

4

2 に答える 2

7

onKeyDown もオーバーライドし、false ではなく true を返します。このようなもの:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch (keyCode) {
        case KeyEvent.KEYCODE_DPAD_LEFT:
        case KeyEvent.KEYCODE_DPAD_RIGHT:
        case KeyEvent.KEYCODE_DPAD_UP:
        case KeyEvent.KEYCODE_DPAD_DOWN:
            return true; 
    }
    return false;
}
于 2013-04-16T08:41:33.700 に答える
0

documentationでは、次を返す必要があると記載されています。

  • イベントを処理した場合はtrue
  • 次の受信者がイベントを処理できるようにする場合はfalse

メソッドが false を返しているため、イベントをデフォルトのキー ハンドラーに渡しています。

于 2013-04-16T08:25:16.247 に答える