Почему числовое ограничение не работает на виртуальной клавиатуре в LWUIT? - PullRequest
1 голос
/ 28 сентября 2011

Я протестировал много способов определения числовых значений и паролей в TextField.Но это не работает, см. Приведенный ниже код.

textField.setConstraint(TextField.NUMERIC | TextField.PASSWORD);
textField.setInputModeOrder(new String[]{"123"});

Выше код должен работать на мобильных телефонов без сенсорного.Но это не работает на мобильных телефонах.Поэтому я установил значение режима ввода для VKB и связал его TextField с VKB, см. Этот код.

TextField txt = new TextField(); 
txt.setConstraint(TextField.NUMERIC |TextField.PASSWORD); 
txt.setInputModeOrder(new String[]{"123"});
VirtualKeyboard vkb = new VirtualKeyboard(); 
vkb.setInputModeOrder(new String[]{VirtualKeyboard.NUMBERS_MODE});  
VirtualKeyboard.bindVirtualKeyboard(txt, vkb);

VirtualKeyboard.NUMBERS_MODE не работает, когда я использую код выше.VKB отображается в обычном формате.Это означает, что AlphaNumeric формат.Почему его показ так?

1 Ответ

3 голосов
/ 29 сентября 2011

Это ошибка в LWUIT, спасибо, что сообщили нам об этом, я постараюсь исправить ее в ближайшие пару недель. Это было бы раньше, но нам нужно лететь на JavaOne в ближайшее время.

Если вы хотите попробовать исправить локально, просто обновите этот метод в VirtualKeyboard.java:

.
public void setInputType(int inputType) {
    if((inputType & TextArea.NUMERIC) == TextArea.NUMERIC || 
            (inputType & TextArea.PHONENUMBER) == TextArea.PHONENUMBER) {
        setInputModeOrder(new String []{NUMBERS_MODE});
        return;
    }
    if((inputType & TextArea.DECIMAL) == TextArea.NUMERIC) {
        setInputModeOrder(new String []{NUMBERS_SYMBOLS_MODE});
        return;
    }
    setInputModeOrder(defaultInputModeOrder);
}
...