Comment afficher la boîte de dialogue de progression avant de commencer une activité dans Android?
Comment affichez-vous une boîte de dialogue de progression avant de démarrer une activité (c'est-à-dire pendant que l'activité charge des données) dans Android?
2 réponses
Vous devez charger des données dans un AsyncTask et mettre à jour votre interface lorsque les données se terminent le chargement.
Vous pouvez même démarrer une nouvelle activité dans la méthode onPostExecute()
de votre AsyncTask.
Plus précisément, vous aurez besoin d'une nouvelle classe qui étend AsyncTask:
public class MyTask extends AsyncTask<Void, Void, Void> {
public MyTask(ProgressDialog progress) {
this.progress = progress;
}
public void onPreExecute() {
progress.show();
}
public void doInBackground(Void... unused) {
... do your loading here ...
}
public void onPostExecute(Void unused) {
progress.dismiss();
}
}
, Puis dans votre activité, vous feriez:
ProgressDialog progress = new ProgressDialog(this);
progress.setMessage("Loading...");
new MyTask(progress).execute();
Lorsque vous démarrez un processus de longue durée sur Android, il est toujours conseillé de le faire sur un autre thread. Vous pouvez ensuite utiliser le thread de L'interface utilisateur pour afficher une boîte de dialogue de progression. Vous ne pouvez pas afficher une boîte de dialogue de progression dans le même thread (UI) dans lequel le processus est en cours d'exécution.
Procédez comme suit pour démarrer votre processus
pd = ProgressDialog.show(this, "Synchronizing data", "Please wait...");
Thread t = new Thread(this);
t.start();
Pour cela, votre activité devrait implémenter Runnable comme suit
public class SyncDataActivity extends Activity implements Runnable
Et enfin une méthode pour effectuer le processus de longue
@Override
public void run() {
//your code here
}