2012-03-21 59 views
0

當我使用這種方法時,它在黑莓模擬器上拋出非法狀態表達式。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,狀態,時間)。它拋出非法的狀態表達。

但在設備中沒有錯誤顯示。只在黑莓模擬器上。這是它的問題。

回答

1

試試這個:

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

0
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