1

onKeyUp イベントをオーバーライドした 2 つのアクティビティがあります。

@Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        Log.d(TAG, "Key up: " + keyCode);
        return super.onKeyUp(keyCode, event);
     }

1 つ目はアプリケーションの主な活動であり、もう 1 つは二次的なものです。1 つ目は問題なく動作しますが、2 つ目は左右上下のイベントをキャプチャしますが、センター クリックのイベントはキャプチャしません。なんで?

4

1 に答える 1

5

レイアウトにギャラリーがあるので、https ://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/Gallery.java#L1216 をご覧ください。ギャラリーが DPAD_CENTER イベント (および ENTER) を盗む可能性があります。

Activity.dispatchKeyEvent(android.view.KeyEvent)を使用して、そのギャラリーに移動する前にイベントを停止することをお勧めします。

次のように使用してみてください (アクティビティで):

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
  if(event.getKeyCode() == KeyEvent.KEYCODE_DPAD_CENTER) {
    // Do your stuff here.
    return true; // Consume the event (or not, your call)
  }
  return super.dispatchKeyEvent(event);
}
于 2012-10-17T17:45:14.620 に答える