2010-06-02 32 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()