Как определить ключ «удалить» в моем подклассе Field? - PullRequest
3 голосов
/ 03 июня 2009

Я пытаюсь обнаружить и переопределить клавишу Delete на клавиатуре Blackberry.

По какой-то причине, он никогда не попадает в мое утверждение case, как при достижении этой точки:

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;
}

1 Ответ

3 голосов
/ 03 июня 2009

Вероятно, что ключевое событие используется другой функцией KeyListener.keyDown, прежде чем она сможет достичь этого поля. Вы можете легко проверить это, установив точку останова в вашей реализации keyDown (), чтобы убедиться, что приложение достигает этой точки.

Чтобы использовать ключевое событие, функция KeyListener просто должна возвращать true. Убедитесь, что вы не возвращаете true по умолчанию для любых других реализаций keyDown, чтобы каждая реализация использовала только те ключи, которые она использует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...