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

我已经测试了很多方法来在TextField中给出数字和密码约束。 但它不起作用,请参阅下面的代码。

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

以上代码应适用于非触摸手机。 但它不适用于触控手机。 所以我已经为VKB设置了输入模式值并将该TextFieldVKB绑定,请参阅此代码。

 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格式。 为什么会这样显示?

这是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); }