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);
}
答
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);
来解决你的问题。 :)
对不起,我仍然在模拟器 – RVG 2012-03-21 08:49:15
更新我的答案。检查这个时间。 – 2012-03-21 08:56:25