我正在尝试检测并覆盖黑莓键盘上的删除键。
出于某种原因,它永远不会出现在我的案例陈述中,因为当它到达那个点时:
Keypad.key(keycode) == 8 Keypad.KEY_DELETE == 127
我的错误是什么?
public class MyField extends ListField implements KeyListener { // ... /** Implementation of KeyListener.keyDown */ public boolean keyDown(int keycode, int time) { boolean retval = false; switch (Keypad.key(keycode)) { /* DELETE - Delete the timer */ case Keypad.KEY_DELETE: if (Keypad.status(keycode) == KeyListener.STATUS_SHIFT) { _myDeleteCmd.run(); retval = true; } break; default: retval = super.keyDown(keycode, time); } return retval; }
很可能是另一个keyListener.keydown函数在键事件到达该字段之前正在使用它。通过在keydown()实现中设置一个断点来确保应用程序达到这一点,您可以很容易地对此进行测试。
要使用键事件,keyListener函数只需返回true。确保在默认情况下不会为任何其他keydown实现返回true,以确保每个实现只使用它使用的键。