我有2个活动,在这里我重写了onKeyUp事件:

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


第一个是应用程序的主要活动,另一个是次要的。第一个工作正常,但是第二个捕获左向右上向下事件,但不捕获中心单击事件。为什么?

最佳答案

由于您的布局中有一个图库,因此请查看: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);
}

关于android - onKeyUp对KEYCODE_DPAD_CENTER不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12894829/

10-12 04:22