Ich rief 'neue NewForm (res) .show()' in PostResponse, aber obwohl die Verbindung erfolgreich ist, wird die bestimmte Form nicht gesehen. Ich habe herausgefunden, dass es gut funktioniert, wenn ich 'cr.setDisposeOnCompletion (d)' auskommentiere. Aber unendlich Fortschritt läuft unendlich, wenn irgendeine Ausnahme auftritt und so weiter. Ist das ein Fehler? Es trat auf, nachdem ich auf neues cn1 Bibliotheksupdate aktualisiert habe. Wenn Sie das Projekt, um zu sehen, sein hier: https://drive.google.com/file/d/0B8ATnICIY2S8LUdta0F5NXYzamM/view?usp=sharingConnectionRequest Problem
Button checkButton = new Button("Check");
checkButton.addActionListener(e -> {
ConnectionCheck cc = new ConnectionCheck(theme);
cc.connectionCheckMethod();
});
ConnectionCheck Klasse
public class ConnectionCheck {
Resources res;
Dialog d;
public ConnectionCheck(Resources res) {
this.res = res;
}
public void connectionCheckMethod() {
ConnectionRequest cr = new ConnectionRequest() {
@Override
protected void readResponse(InputStream input) throws IOException {
JSONParser jsonp = new JSONParser();
Map<String, Object> parser = jsonp.parseJSON(new InputStreamReader(input));
System.out.println("bibek " + parser);
}
@Override
protected void postResponse() {
new NewForm(res).show();
// d.dispose();
}
@Override
protected void handleErrorResponseCode(int code, String message) {
System.out.println("login ErrorResponseCode " + code + "msg: " + message);
// d.dispose();
}
@Override
protected void handleException(Exception err) {
System.out.println("login Exception " + err);
// d.dispose();
}
@Override
protected void handleIOException(IOException err) {
System.out.println("login IOException " + err);
// d.dispose();
}
@Override
protected void handleRuntimeException(RuntimeException err) {
System.out.println("login RuntimeException " + err);
// d.dispose();
}
};
cr.setPost(true);
cr.setUrl("http://api.geonames.org/citiesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&lang=de&username=demo");
cr.setTimeout(30000);
cr.addRequestHeader("Accept", "application/json");
InfiniteProgress ip = new InfiniteProgress();
d = ip.showInifiniteBlocking();
cr.setDisposeOnCompletion(d); //if this line is commented, the newForm is shown
NetworkManager.getInstance().addToQueueAndWait(cr);
}
}
NewForm Klasse
public class NewForm extends Form{
public NewForm(Resources res){
setTitle("new Form");
add(new Label("new Form"));
}
}
Ich habe neue Form in PostResponse-Methode aufgerufen. PostResponse() sollte aufgerufen werden, nachdem connectionRequest erfolgreich ist (dh, dispose on completion wird vor dem neuen Formular in postResponse aufgerufen), oder? Der obige Code wurde früher verwendet. Was sollte ich jetzt ändern? Muss ich das Dialogfeld manuell in der Post-Response-Methode und in jeder Ausnahme behandeln? –
Ja, entsorgen Sie es manuell –