ボタンアクションリスナーとコマンドアクションリスナーからフォーム名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();
});
}
申し訳ありませんが、私はポイントを逃した、私はスケジュールのグループフォーム(plzは質問の上を参照してください)でscheduleBackgroundTaskを使用しています。それは問題ですか?私はツールバーの検索を追加したいので、私はそれを保持してきました。そしてブログのscheduleBackgroundTaskも使用されています。私はjstがブログに続いた。私はなぜbtnアクションリスナーの同じコードが動作しますが、コマンドアクションリスナーではないのだろうかと疑問に思います – beck
私はスケジュールバックグラウンドタスクの必要性を見ません。すべてのデータが正しいとわかったときに、再検証を実行するのではなく、競合状態に頼っているように見えます。 –