单击后退按钮会发出非法状态异常

时间:2012-02-24 03:47:50

标签: blackberry

在我的应用程序中,当我点击我显示一个对话框时。当我在那个对话框中按下是的时候,它给了我非法的州例外。但我想回到上一个屏幕。如果我点击菜单并单击关闭,则它将返回上一屏幕。以下是我的代码:

 public boolean keyDown(int keycode, int time) {

        if (Keypad.KEY_ESCAPE == Keypad.key(keycode)) {
            int result = Dialog.ask(Dialog.D_YES_NO, "Do you want to edit the list?");
            if (result == Dialog.YES) 
            {
                try
                {
                    UiApplication.getUiApplication().popScreen(this);
                }
                catch (Exception e) 
                {
                    e.printStackTrace();
                }
//              onClose();
            } 
            else 
            {
                return true;
            }
        } // end if

        return false;
    } 

请帮助..

1 个答案:

答案 0 :(得分:2)

当您单击设备中的后退按钮时,将调用默认的 onclose()方法。所以,试着这样做;

protected boolean onSavePrompt() 
{
    return true;
}
public boolean onClose() 
{
    int choose=Dialog.ask(Dialog.D_YES_NO, "Close the screen?");
    if(choose==Dialog.YES)
    {
        return super.onClose();
    }
    return true;
}

这是更好的方式;如果你像上面那样使用那么你可能会遇到一个问题;那就是:

  

如果您在第一个屏幕中使用该方法,那么在弹出屏幕时根据您的代码然后显示堆栈中没有屏幕(因为它是第一个屏幕);所以你可能会遇到这类问题;

试试这个;