2016-06-02 1 views
0

Ich verwende OptimusHTTP-Bibliothek auf meinem Android-Projekt. Ich versuche das Laden anzuzeigen, wenn meine App den Server kontaktiert. Mein Problem ist, warum mein Fortschrittsdialog nicht ablehnt. Hier ist mein Code.Loading Dialog auf HTTP-Aufruf OptimusHTTP

Ich weiß, dass diese Bibliothek (OptimusHTTP) Asnyc bei der Kontaktaufnahme mit Server verwendet. Gibt es eine Konfiguration, ob ich sync oder async auf der http-Verbindung verwende? Was, wenn im include Methode in einigen Async-Code (Double Async) erhalten?

ich weiß, dass meine Frage wie eine neue Frage erscheint. aber es braucht Lernprozess, um ein Profi zu werden :) Danke.

Antwort

1

@navotera: Sie können einen ProgressDialogue zeigen kurz vor einer Anforderung und wenn die Anforderung abgeschlossen ist, unter dem Hörer nur den Fortschritt Dialog schließen.

dh

... 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
... 
... 
// Initialize the progressdialog 
final ProgressDialog progressDialog = new ProgressDialog(this); 
progressDialog.setMessage("Connecting"); 
... 
... 
// Show the progressdialog just before making a request 
progressDialog.show(); 
// Make the request 
req = client.makeRequest(MainActivity.this, SERVER_URL, params,new OptimusHTTP.ResponseListener(){ 
    @Override public void onSuccess(String msg) { 
     System.out.println(msg); 
      // Dismiss the progressdialog 
     progressDialog.dismiss(); 
     } 

     @Override public void onFailure(String msg) { 
     System.out.println(msg); 
      // Dismiss the progressdialog 
     progressDialog.dismiss(); 
     } 
    }); 
+0

thnks Millionen funktioniert es :) – navotera

0

Sie sehen, diese Bibliothek (OptimusHTTP) verwendet asnyc bei der Kontaktaufnahme mit Server.Aber warum haben Sie UI auf dem gleichen Thread aktualisiert?

private final OptimusHTTP.ResponseListener responseListener = new OptimusHTTP.ResponseListener() { 
    @Override 
    public void onSuccess(String msg) { 
     System.out.println(msg); 
     //mprogressdialog.dismiss(); 
     Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show(); 

    } 



    @Override 
    public void onFailure(String msg) { 
    System.out.println(msg); 
    } 
}; 
+0

Dank für Ihre Antwort ... u bedeuten, wenn ich versuche, die Fortschrittsbalken (auf meinem Code i Kommentar- //mprogressdialog.dismiss kann()) zu entlassen, es wird nicht funktionieren, weil im Android fragen auf dem anderen Thread als UI arbeiten ..... so loading.dismiss() wird nicht funktionieren ...? – navotera

+0

ja, sollten Sie UI auf dem Haupt-Thread aktualisieren – CoXier

+0

ich den Code ändern, wie Sie mit diesem Vorschlag: ' runOnUiThread (neu Runnable() { public void run() { mprogressdialog.dismiss();} }); ' es immer noch nicht funktioniert, wo habe ich falsch gemacht? danke trotzdem .. – navotera