Метод виртуальной клавиатуры BlackBerry Touch Fone не вызывается - PullRequest
0 голосов
/ 03 ноября 2011

Я использую настраиваемое поле редактирования, которое переопределяет метод Keychar следующим образом

          protected boolean keyChar(char key, int status, int time) {
        System.out.println(key);
    Logger.getInstance().logInformationEvent("key char" + String.valueOf(key));

    if (key == (char) 27 || (key == '\b') || (key == (char) 32)) {
        Logger.getInstance().logInformationEvent("key char 1");
        return super.keyChar(key, status, time);
    } else if ((int) key == 13 || (key == '\n') || (key == '1') || (key == '2') || (key == '2') || (key == '3') || (key == '4') || (key == '5')
            || (key == '6') || (key == '7') || (key == '8') || (key == '9') || (key == '0') || (key == ',') || (key == '.') || (key == ';')
            || (key == ':') || (key == '"') || (key == '(') || (key == ')') || (key == '-') || (key == '_') || (key == '+') || (key == '=')
            || (key == '@') || (key == '#') || (key == '$') || (key == '%') || (key == '%') || (key == '}') || (key == '{') || (key == '[')
            || (key == ']') || (key == '*') || (key == '7') || (key == '^') || (key == '>') || (key == '<') || (key == '~') || (key == '`')
            || (key == '!') || (key == '/') || (key == '?')) {
        Logger.getInstance().logInformationEvent("key char 2");
        return true;
    }

    if ((int) key == 39 || (int) key == 92 || (int) key >= 123) {
        Logger.getInstance().logInformationEvent("key char 3");
        return true;
    }

    if (((int) key >= 65 || (int) key <= 90)) {
        Logger.getInstance().logInformationEvent("key char 4");
        return super.keyChar(key, status, time);
    } else if (((int) key >= 97 || (int) key <= 122)) {
        Logger.getInstance().logInformationEvent("key char 5");
        return super.keyChar(key, status, time);
    }
    // ascii code for a to z
    // asc11 fo A to Z

    if (!getText().trim().equals("")) {
        setText(Utility.toUpper(getText()));
    }
    Logger.getInstance().logInformationEvent("key char last");
    return true;



}

Не вызывается, когда для ввода используется виртуальная клавиатура с сенсорным экраном

Любая помощь будет оценена Спасибо

1 Ответ

0 голосов
/ 20 декабря 2011

Я думаю, что может быть решение реализовать FieldChangeListener в вашем собственном классе поля редактирования, проверить, какой последний символ был вставлен, и выполнить вашу логику вокруг вставленного символа.Это, я думаю, единственное решение, которое имеет смысл.Но да, если вы хотите сбросить определенный символ, вам нужно изменить его, используя setText() в EditField, но я думаю, что он выстрелит в другое событие fieldChange, поэтому попробуйте создать логику проверки логики, чтобы избежать этого или это может быть любоедругая логика, потому что вы хотели бы избежать рекурсивных циклов.

public void fieldChanged(Field field, int context){
    String s = getText();
    char cInserted = s.charAt(s.length()-1);
    //put your logic with character here
}

keyChar с VirtualKeyboard работает только с клавишей ENTER, я думаю.

Я надеюсь, что это работает.Дайте нам знать, если это так.

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