连接和Toastbar不显示问题

时间:2016-09-15 13:42:30

标签: codenameone

1)使用actionListener作为参数

的ConnectionRequest
{
    "starttime": "2016-09-15T03:19:46",
    "endtime": "2016-09-15T03:31:43",
    "duration": 696,
    "status": "bad"
},

在上面的connectionRequest代码中,如果没有网络连接,它会给出IoException:unreachable,这是由下面的handleIOException方法处理的,但如果我在那里使用dialogBox,它就可以了。相反toastbar不在那里工作,为什么呢?如果我使用showForm(" Form",null)以及dialogBox和toastbar,则会重复调用相同的表单,并且还会看到toastbar,并且多次出现对话框。

2)postForm(Form f)方法

ArrayList<Map<String, Object>> responses;
public void groupConnection(StateMachine sm, ActionListener al) {
    ConnectionRequest connectionRequest = new ConnectionRequest() {
        @Override
        protected void readResponse(InputStream input) throws IOException {
            JSONParser jSONParser = new JSONParser();
            Map<String, Object> parsedData = jSONParser.parseJSON(new InputStreamReader(input));
            responses = (ArrayList<Map<String, Object>>) parsedData.get("root");
            Display.getInstance().callSerially(new Runnable() {
                @Override
                public void run() {
                    al.actionPerformed(null);
                }
            });
        }

        @Override
        protected void handleException(Exception err) {
           //System.out.println("handleException " + err);
        }

        @Override
        protected void handleIOException(IOException err) {
           //toastbar doesnt work here but dialogBox works, if showForm("Groups") is used, toastbar is also shown along with dialogbox
           //ToastBar.showErrorMessage("Please check your network connection", 4000);
           //sm.showForm("Groups", null);
           Dialog.show("", "Please check your network connection", "ok", null);
        }
    };
    AllUrl allUrl = new AllUrl();
    connectionRequest.setUrl(allUrl.groupsMenu);
    InfiniteProgress ip = new InfiniteProgress();
    Dialog d = ip.showInifiniteBlocking();
    connectionRequest.setDisposeOnCompletion(d);
    NetworkManager.getInstance().addToQueue(connectionRequest);
}

在上面的postForm方法中,我曾经通过检查来检查是否存在网络连接:if(connectionGroup.responses == null){do smth ...},它在这里不起作用,因为connectionRequest给出了IoException&amp;不会在connectionRequest中运行代码。

如何解决这个问题?我必须显示&#34;检查连接&#34;在toastBar和带有文本&#34的标签;没有连接&#34;同样。 PS我需要把我所有的组件放在一起postForm中的connectionRequest,因为我需要在调用connectionRequest之前转到表单。

1 个答案:

答案 0 :(得分:0)

ToastBar绑定到特定的Form,而Dialog会阻止任何表单展示自己。

您已将ToastBar设置为一个表单,然后转换为另一个表单Form