4

我正在尝试捕获由箭头键(向上、向下、向右和向左)生成的事件并禁用它们。下面的代码片段来自活动类之一。

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

但是,有了这些代码,键导航就可以工作了。我尝试将关键侦听器添加到也不起作用的活动中。

目标设备是三星 GT-I5500,Android 2.2 版本开启。

我错过了什么吗?

4

2 回答 2

7

也覆盖 onKeyDown 并返回 true 而不是 false。像这样的东西:

@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

文档中,声明您应该返回:

  • 如果您处理了事件,则为true
  • 如果您想允许下一个接收者处理事件,则返回false

您的方法返回 false,因此您将事件传递给默认键处理程序

于 2013-04-16T08:25:16.247 回答