2011-11-03 32 views
0

我使用的是定製的編輯字段將覆蓋Keychar方法如下黑莓觸摸FONE虛擬鍵盤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; 



} 

當觸摸屏幕上的虛擬鍵盤用於輸入

它不會被調用

任何幫助將不勝感激 感謝

+0

嗯相當一個問題..尋找解決相同的問題。 – Sameer

回答

0

我覺得這可能是一個解決方案是實現您的自定義編輯字段級FieldChangeListener,檢查什麼最後一個字符插入並執行你的邏輯圍繞插入的字符。我認爲這是唯一有意義的解決方案。但是,是的,如果您願意放棄特定字符,那麼您需要在EditField中使用setText()來更改它,但我認爲它會拍攝另一個fieldChange事件,因此請嘗試製作布爾檢查邏輯以避免它或可能是任何其他邏輯,因爲你想避免遞歸循環。

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

與VirtualKeyboard的keyChar只適用於ENTER鍵我猜。

我希望它有效。讓我們知道如果它。