侧边菜单命令中的Actionlistener打开空白表单,但按钮动作侦听器中的相同操作正常打开表单

时间:2016-07-12 16:17:52

标签: codenameone

我从按钮动作侦听器和命令动作侦听器调用了一个表单名称Groups。在两者中,我都调用了连接请求。在postResponse方法中 声明连接showForm。这里的问题是当我单击按钮并且组表单正常打开时它很有效但是当我从汉堡菜单中单击命令时,会显示空白表单但是一旦触摸屏幕,就显示内容(两者都显示)在真实设备和模拟器中)。 PS我也在组表单中调用了revalidate方法。它如何在一个而不是在另一个中工作,因为我在命令和命令中都有相同的代码。按钮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();
    });
}

1 个答案:

答案 0 :(得分:0)

两者之间的主要区别在于侧边菜单导航到临时表单,然后重新显示表单。我猜你的revalidate()来电是在表格尚未展示/构建的错误时间制作的。