2009-12-30 18 views
27

Esiste una finestra di dialogo standard "Caricamento, attendi" che posso utilizzare nello sviluppo di Android, quando invoco alcuni AsyncTask (ad esempio, il download di alcuni dati dal servizio remoto)?Android: caricamento, attendere

risposta

72

Intendi qualcosa come un indeterminato ProgressDialog?

Edit: vale a dire

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

quindi chiamare dialog.dismiss() quando fatto.

+0

Cordiali saluti, Questa classe è stata sconsigliata a livello 26. suggerito alternative API sono https://developer.android.com/reference/android/widget/ProgressBar.html e https : //developer.a ndroid.com/guide/topics/ui/notifiers/notifications.html. –

10

Mirko è fondamentalmente corretto, tuttavia ci sono due cose da notare:

  1. ProgressDialog.show() è una scorciatoia che crea automaticamente una finestra di dialogo. A differenza di altre finestre di dialogo, NON deve essere utilizzato in onCreateDialog(), in quanto causerà errori in Android 1.5.

  2. Ci sono altri problemi con AsyncTask + ProgressDialog + cambiamenti di orientamento dello schermo di cui dovresti essere a conoscenza - check this out.

+0

grazie per l'elenco delle cose da tenere d'occhio! e, a proposito, carino l'icona di Braid che hai lì :) – kape123

19

Se si implementa eseguibile così come l'estensione di attività, allora si potrebbe gestire il codice come questo ...

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 
    } 
}; 

Vale la pena ricordare che è possibile impostare la visualizzazione contenuto della finestra di avanzamento in modo da può visualizzare un messaggio personalizzato/immagine :)

pDialog.setContentView(R.layout.X); 
Problemi correlati