2012-03-05 119 views
-1

我有一个位图字段在我的blackberry5应用程序与fieldChanged监听器连接到它,它工作绝对精细 现在我的问题是,我也有一个相同的目的相关的菜单(我不能删除它的要求),并点击我得到的菜单中选择一个JVM 104 IllegalStateException异常黑莓位图fieldChanged抛出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(); 

    } 

} 

,这里是菜单和fieldchnaged代码

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") 
    } 
} 
+0

任何建议,提示或建议,请 – 2012-03-05 11:59:27

+0

和内部fieldChanged(场,上下文) – 2012-03-05 12:21:32

+0

代码保护无效列出MakeMenu(菜单菜单,诠释实例){ \t \t \t \t menu.add(new RefreshMenu()); \t \t menu.addSeparator(); (新的TabMenu(“Go>”,this,goTab)); \t \t menu.addSeparator(); \t \t \t } 公共无效fieldChanged(场场,INT上下文){ \t \t \t 如果(场== goTab) \t { \t \t Dialog.alert( “goinf”) \t} } – 2012-03-05 12:22:07

回答

0

试着改变你的TabMenu#run()方法如下:

public void run() { 
    this.button.fieldChangedNotify(this.button.getIndex()); 
    this.button.setFocus(); 
}