我在屏幕上使用过标签页。每个选项卡都有其自己的json数据要读取。因此,我在每个选项卡中都使用了ConnectionRequest方法。因此,发生的事情是所有connectionRequest方法都立即运行,并且应用程序运行缓慢。我需要的是,当选择了各个选项卡时,将解析特定的json数据,以便仅解析所需的json。因此,我使用了addSelectionListener,以便仅在打开特定选项卡时才读取用于解析json数据的connectionRequest。但是,当首先读取屏幕时,将显示空白屏幕。如果选择了选项卡,那么它将起作用。通过将代码保留在addSelectionListener之外,可以使每个选项卡的所有connectionRequests一次运行,这是我不希望的。我该如何解决这个问题?
从特定屏幕备份时,我还需要返回特定标签。然后在这里也可以看到这个问题。 ConnectionRequest无法运行。
Tabs tabs = new Tabs(Component.BOTTOM);
tabs.addTab("Home", calendarIcon, homeContainer);
tabs.addTab("Book", calendarIcon3, quickBookingContainer);
tabs.addTab("Servicing", calendarIcon1, servicingContainer);
tabs.addTab("History", calendarIcon2, serviceHistoryContainer);
add(BorderLayout.CENTER, tabs);
tabs.addSelectionListener((int oldSelected, int newSelected) -> {
if (newSelected == 0) {
//connectionRequest for parsing json data
homeContainerRequest(homeContainer, res);
} else if (newSelected == 1) {
quickBookingContainerRequest(quickBookingContainer, res);
} else if (newSelected == 2) {
serviceRequest(serviceContainer, res);
} else if (newSelected == 3) {
serviceHistoryRequest(serviceHistoryContainer, res);
}
});
public void homeContainerRequest(Container homeContainer, Resources res){
ConnectionRequest con = new ConnectionRequest(url, false) {
@Override
protected void readResponse(InputStream input) throws IOException {
JSONParser jp = new JSONParser();
Map parser = jp.parseJSON(new InputStreamReader(input));
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
}
};
con.setFailSilently(true);
con.addRequestHeader("accept", "application/json");
NetworkManager.getInstance().addToQueue(con);
}
public void quickBookingContainerRequest(Container quickBookingContainer, Resources res){
ConnectionRequest con = new ConnectionRequest(url1, false) {
@Override
protected void readResponse(InputStream input) throws IOException {
JSONParser jp = new JSONParser();
Map parser = jp.parseJSON(new InputStreamReader(input));
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
}
};
con.setFailSilently(true);
con.addRequestHeader("accept", "application/json");
NetworkManager.getInstance().addToQueue(con);
}
public void serviceHistoryRequest(Container serviceHistoryContainer, Resources res){
ConnectionRequest con = new ConnectionRequest(url2, false) {
@Override
protected void readResponse(InputStream input) throws IOException {
JSONParser jp = new JSONParser();
Map parser = jp.parseJSON(new InputStreamReader(input));
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
}
};
con.setFailSilently(true);
con.addRequestHeader("accept", "application/json");
NetworkManager.getInstance().addToQueue(con);
}
答案 0 :(得分:0)
第一个标签已被选中,因此没有选择事件。您需要为此设置特殊情况。请注意,选项卡选择经常发生,因此您需要缓存结果。