2012-03-21 9 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); 

}

私は真の戻り値の型、シミュレータ上のエラーなしの表示を与える場合。

私はsuper.keyChar(c、status、time)を使用します。それは違法な状態表現を投げる。

ただし、デバイスにエラーは表示されません。ブラックベリーシミュレータでのみ。 whtは問題です。これを試してみてください

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

はこれを試してみてください。これは動作します。

あなたの問題はifブロックのreturning trueとelseブロックのreturn super.keyChar(c, status, time);で解決できます。 :)

+0

まだ私はシミュレータで同じerronを持っています – RVG

+0

私の答えを更新しました。この時間を確認してください。 –

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

    } 
return true; 
} 

+0

戻り値の型をtrueにすると、アクティブな画面上のテキストボックスにテキストを入力できません。キー文字メソッドは、テキストボックスにキーを入力することを許可しません。 – RVG

+0

私はあなたがスタックにプッシュせずに画面をポップアップしたいと思う。 – BBdev

関連する問題