2016-07-12 9 views
1

ボタンアクションリスナーとコマンドアクションリスナーからフォーム名Groupsを呼び出しました。両方とも、私は接続要求を呼び出しました。 postResponseメソッド では、接続showFormが宣言されています。ここで問題となるのは、ボタンをクリックしてグループフォームが正常に開きますが、ハンバーガーメニューからコマンドをクリックすると、空白のフォームが表示されますが、画面がタッチされると内容が表示されます実際のデバイスとシミュレータで)。 PS私はまた、グループフォームでrevalidateメソッドを呼び出しました。私は両方のコマンドで&ボタンのActionListenerを同じコードを持っているので、どのようにそれはサイドメニューで、他の1つのといないでサイドリストのコマンドのActionListenerは空白のフォームを開きますが、ボタンアクションリスナーでも同様にフォームが開きます

コマンドを働かせることができる

Command goToGroup = new Command("Tables",homeIcon1) { 

    @Override 
    public void actionPerformed(ActionEvent evt) { 
     connectionGroup = new GroupConnection(); 
     connectionGroup.groupConnection(StateMachine.this); 
    } 

}; 
f.addCommand(goToGroup); 

ボタンのアクションリスナー形で

groups.addActionListener((e) -> { 
    connectionGroup = new GroupConnection(); 
    connectionGroup.groupConnection(this); 
}); 

接続

public class GroupConnection { 

void groupConnection(StateMachine sm) { 

    ConnectionRequest connectionRequest = new ConnectionRequest() { 
     @Override 
     protected void readResponse(InputStream input) throws IOException { 
     - - - - - - 
     - - - - - - 
     } 
     @Override 
     protected void postResponse() { 
      sm.showForm("Groups", null); 
     } 
     - - - - - - 
     - - - - - - 
    }; 
    } 
} 

グループ形式:

protected void beforeGroups(Form f) { 
    Display.getInstance().scheduleBackgroundTask(() -> { 
     Display.getInstance().callSerially(() -> { 
      if (connectionGroup.responses != null) { 
       for (Map<String, Object> element : connectionGroup.responses) { 
        String id = (String) element.get("id"); 
        String tableName = (String) element.get("name"); 
        String tableImg = (String) element.get("tablelogo"); 
        - - - - - - - - 
        - - - -- - - - - - 
       } 
      } 
     }); 
     f.revalidate(); 
    }); 
} 

答えて

0

2つの主な違いは、サイドメニューが一時的なフォームにナビゲートし、その後にフォームを再表示することです。私はrevalidate()へのあなたの呼び出しが、まだフォームが表示/構築されていない間違った時間に行われたと推測しています。

+0

申し訳ありませんが、私はポイントを逃した、私はスケジュールのグループフォーム(plzは質問の上を参照してください)でscheduleBackgroundTaskを使用しています。それは問題ですか?私はツールバーの検索を追加したいので、私はそれを保持してきました。そしてブログのscheduleBackgroundTaskも使用されています。私はjstがブログに続いた。私はなぜbtnアクションリスナーの同じコードが動作しますが、コマンドアクションリスナーではないのだろうかと疑問に思います – beck

+0

私はスケジュールバックグラウンドタスクの必要性を見ません。すべてのデータが正しいとわかったときに、再検証を実行するのではなく、競合状態に頼っているように見えます。 –

関連する問題