java-为什么数字约束在LWUIT中的虚拟键盘上不起作用?

我已经测试了许多在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照常显示.这意味着字母数字格式.为什么显示这样?

解决方法:

这是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);
}
上一篇:iOS学习——页面的传值方式


下一篇:javascript-Wicket 1.5自动完成文本字段onUpdate行为未调用