2009-12-30 15 views
27

Gibt es einen standardmäßigen "Laden, bitte warten" -Dialog, den ich in der Android-Entwicklung verwenden kann, wenn ich eine AsyncTask aufruft (z. B. Herunterladen von Daten vom Remote-Dienst)?Android - Wird geladen, bitte warten

Antwort

72

Sie meinen so etwas wie eine unbestimmte ProgressDialog?

Edit: das heißt

ProgressDialog dialog = ProgressDialog.show(context, "Loading", "Please wait...", true); 

dann dialog.dismiss() rufen, wenn Sie fertig.

+0

FYI, wurde in API-Ebene 26 Vorgeschlagene Alternativen sind https://developer.android.com/reference/android/widget/ProgressBar.html und https Diese Klasse ist veraltet : //entwickler.a ndroid.com/guide/topics/ui/notifiers/notifications.html. –

10

Mirko ist grundsätzlich richtig, aber es gibt zwei Dinge zu beachten:

  1. ProgressDialog.show() eine Abkürzung, die automatisch einen Dialog erzeugt. Im Gegensatz zu anderen Dialogen sollte es NICHT in onCreateDialog() verwendet werden, da dies zu Fehlern in Android 1.5 führen wird.

  2. Es gibt einige weitere Probleme mit AsyncTask + ProgressDialog + Bildschirmausrichtung Änderungen, die Sie beachten sollten - check this out.

+0

danke für die Liste der Dinge aufpassen! und übrigens, süße Braid-Symbol, das du da hast :) – kape123

19

Wenn Sie als Verlängerung Aktivität runnable und implementieren dann könnten Sie den Code wie folgt handhaben ...

private ProgressDialog pDialog; 

public void downloadData() { 
    pDialog = ProgressDialog.show(this, "Downloading Data..", "Please wait", true,false); 
    Thread thread = new Thread(this); 
    thread.start(); 
} 

public void run() { 
// add downloading code here 
    handler.sendEmptyMessage(0); 
} 

private Handler handler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
     pDialog().dismiss(); 
     // handle the result here 
    } 
}; 

Es erwähnenswert ist, dass Sie, so dass Sie die Inhalte Blick auf den Fortschrittsdialog einstellen kann eine benutzerdefinierte Nachricht/Bild anzeigen :)

pDialog.setContentView(R.layout.X); 
Verwandte Themen