key char override方法在blackberry模拟器上抛出illegalStateException

时间:2012-03-21 07:33:49

标签: blackberry

当我使用此方法时,它会在黑莓模拟器上抛出非法状态表达式。

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,status,time)时。它抛出了非法的表达。

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

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

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

    }
return true;
}

试试这个。这将有效。

您可以通过{block}中的returning true和来自其他部分的return super.keyChar(c, status, time);来解决您的问题。 :)