key char ovveride方法在黑莓模拟器上抛出illegalStateException

key char ovveride方法在黑莓模拟器上抛出illegalStateException

问题描述:

当我使用这种方法时,它在黑莓模拟器上抛出非法状态表达式。key char ovveride方法在黑莓模拟器上抛出illegalStateException

protected boolean keyChar(char c, int status, int time) 
    { 
     if (c == Keypad.KEY_ESCAPE) 
     { 
         UiApplication.getUiApplication().popScreen(UiApplication.getUiApplication().getActiveScreen()); 
     } 
       return super.keyChar(c, status, time); 

}

,如果我给返回类型为true,模拟器没有错误显示。

当我使用super.keyChar(c,状态,时间)。它抛出非法的状态表达。

但在设备中没有错误显示。只在黑莓模拟器上。这是它的问题。

试试这个:

protected boolean keyChar(char c, int status, int time) 
{ 
    if (c == Keypad.KEY_ESCAPE) 
    { 
     UiApplication.getUiApplication().invokeAndWait(new Runnable() { 
      public void run() { 
       UiApplication.getUiApplication().popScreen(UiApplication.getUiApplication().getActiveScreen()); 
      } 
     }); 
     return true; 
    } 
    return super.keyChar(c, status, time); 
} 
+0

对不起,我仍然在模拟器 – RVG 2012-03-21 08:49:15

+0

更新我的答案。检查这个时间。 – 2012-03-21 08:56:25

protected boolean keyChar(char c, int status, int time) 
{ 
    if (c == Characters.ESCAPE) 
    { 
     UiApplication.getUiApplication().popScreen(UiApplication.getUiApplication().getActiveScreen()); 

    } 
return true; 
} 

试试这个。这将工作。

而且你可以通过你的if块中的returning true和其他部分中的return super.keyChar(c, status, time);来解决你的问题。 :)

+0

如果我给返回类型true,我无法在活动屏幕上的文本框中输入文本。键字符方法不允许在文本框中输入密钥。 – RVG 2012-03-21 08:52:14

+0

我认为你想弹出屏幕而不必将它推入堆栈。 – BBdev 2012-03-22 03:44:06