2010-06-02 36 views
1

那么,我正在开发一个应用程序,它将连接到我的电脑,问题是每当我向手机返回一个URLRequest时,它就会显示上一个窗体在屏幕上,而不是去实际之一,例如这是我的ActionListener发生的事情:诺基亚E72上J2ME上的LWUIT存在的问题

public void actionPerformed(ActionEvent ae) { 
    if (ae.getCommand() == guiaUtil.cSelecionar()) { 
     LoginRemote loginRemote = new LoginRemote(); 

     try { 
      //This is the request, returns true or false, does not affect the form 
      loginRemote.login(tLogin.getText(), tPassword.getText()); 
     } catch (Exception e) { 

      GuiaUtil.error(e); 
      return; 
     } 
     guiaUtil.mainApp().startMenu(); 
    } 

} 

在Then “guiaUtil.mainApp()开始菜单()” 我有这个

public void startMenu() { 
    if (itemsMenu == null) { 
     itemsMenu = new List(); 
     itemsMenu.setWidth(320); 

     itemsMenu.addItem("Sincronize Spots"); 
     itemsMenu.addItem("Find Spots"); 
     itemsMenu.addItem("Work"); 
     itemsMenu.setFocus(true); 

     this.addComponent(itemsMenu); 
     this.addCommandListener(this); 
     this.addCommand(guiaUtil.cSelect()); 
     Form form = new Form(); 
     form.addComponent(itemsMenu); 

    } 
    form.show(); 

} 

无论如何,请求返回后,它会再次显示我的登录表单,而不是显示菜单列表

回答

0

不知道在loginRemote.login(tLogin.getText(), tPassword.getText()); 中会发生什么如果您访问网络,我会将该部分置于不同的线程中。 当“远程登录”完成时,通过某种回调通知主线程, 您可以从edt显示menuForm。

0

您必须将以下代码放在if条件之外。

Form form = new Form(); 
form.addComponent(itemsMenu); 

您有两个表单对象。一个在if之内,另一个在if之外。在循环内创建的对象将在if内部丢失范围。你在外面显示表单对象。这就是为什么菜单列表屏幕没有显示。

1

也许发生了什么是你正在得到一个例外,用GuiaUtil.error来处理它,并从actionPerformed返回,而不要求startMenu
我会在try/catch块内移动guiaUtil.mainApp().startMenu()