2011-11-03 50 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键我猜。

我希望它有效。让我们知道如果它。