1

好吧,我正在我的手机中开发一个应用程序,它将连接到我的 PC,问题是每次我向手机返回 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();

}

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

4

3 回答 3

1

也许正在发生的事情是你得到一个异常,用它处理它GuiaUtil.error并从actionPerformed没有调用startMenu.
我会guiaUtil.mainApp().startMenu()在 try/catch 块内移动。

于 2012-08-21T15:37:50.717 回答
0

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

于 2010-08-05T11:51:50.653 回答
0

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

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

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

于 2012-08-21T11:47:17.810 回答