诺基亚E72上J2ME中LWUIT的问题

时间:2010-06-02 20:09:17

标签: java-me nokia lwuit

好吧,我正在我的手机中开发一个应用程序,它将连接到我的电脑,问题是我每次将URLRequest返回给手机时,它会在屏幕上显示上一个表格而不是实际的表格,例如,这就是我的actionListener:

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();
    }

}

然后在“guiaUtil.mainApp()。startMenu()”中我有这个

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();

}

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

3 个答案:

答案 0 :(得分:1)

可能会发生什么事情,你得到一个例外,用GuiaUtil.error处理它并从actionPerformed返回而不调用startMenu
我会在try / catch块中移动guiaUtil.mainApp().startMenu()

答案 1 :(得分:0)

不确定loginRemote.login(tLogin.getText(), tPassword.getText()); 中发生的情况如果您访问网络,我会将该部分放在另一个线程中。 当“远程登录”完成时,通过某种回调通知主线程, 你可以从edt那里显示menuForm。

答案 2 :(得分:0)

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

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

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