-1

私は私のblackberry5アプリにfieldChangedリスナーが接続されたビットマップフィールドを持っていますが、これはまったく問題なく動作します。今私の問題は、同じ目的のために関連するメニューも持っていることです(私はそれを削除することはできません)。 JVM 104 IllegalStateException

ここに私のメニュークラスがあります

 public class TabMenu extends MenuItem{
    MainScreen menuScreen;
    Field button;
    public TabMenu(String menuLabel,MainScreen menuScreen,Field button) 
    {

        super(menuLabel, 1, 0);
        this.menuScreen = menuScreen;
        this.button = button;
    }//end constructor



    public void run() 
    {
        FieldChangeListener listener = (FieldChangeListener)this.menuScreen;
        listener.fieldChanged(this.button, this.button.getIndex());
        this.button.setFocus(); 

    }

 }

ここにメニューとフィールドの変更されたコードがあります

protected void makeMenu(Menu menu, int instance) {
     menu.add(new RefreshMenu()); 
     menu.addSeparator();
     menu.add(new TabMenu("Go >", this, goTab));
     menu.addSeparator();
 } 


  public void fieldChanged(Field field, int context) { 
    if (field == goTab) { 
       Dialog.alert("goinf") 
   }
 }  
4

1 に答える 1

0

TabMenu#run()メソッドを次のように変更してみてください。

public void run() {
    this.button.fieldChangedNotify(this.button.getIndex());
    this.button.setFocus(); 
}
于 2012-03-06T09:28:05.387 に答える