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

0

次のコードをif条件の外に置く必要があります。

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

2つのフォームオブジェクトがあります。1つはifの内側に、もう1つはifの外側にあります。ループ内で作成されたオブジェクトは、if内のスコープを失います。ifの外にフォームオブジェクトを表示しています。そのため、メニュー一覧画面は表示されませんでした。

于 2012-08-21T11:47:17.810 に答える
0

ネットワークにアクセスするloginRemote.login(tLogin.getText(), tPassword.getText()); 場合は、その部分を別のスレッドに入れます。「リモートログイン」が完了したときに、何らかのコールバックによってメインスレッドに通知すると、edt から menuForm を表示できます。

于 2010-08-05T11:51:50.653 に答える