2011-09-28 65 views
1

我測試了很多方法在TextField中給出數字和密碼約束。但它不起作用,請參閱下面的代碼。爲什麼數字約束在LWUIT的虛擬鍵盤上不起作用?

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格式。爲什麼它顯示這樣?

回答

3

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