1

我有 2 个活动,其中我覆盖了 onKeyUp 事件:

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

第一个是应用程序的主要活动,另一个是次要活动。第一个工作正常,但第二个捕获 Left-Right-Up-Down 的事件,而不是 Center click 的事件。为什么?

4

1 回答 1

5

由于您的布局中有一个画廊,请查看:https ://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/Gallery.java#L1216 。Gallery 可能会窃取您的 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 回答