35 votes

Comment afficher la boîte de dialogue de progression avant de démarrer une activité dans Android?

Comment afficher 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?

64voto

Matthew Willis Points 26453

Vous devez charger les données dans une tâche AsyncTask et mettre à jour votre interface une fois le chargement des données terminé.

Vous pouvez même démarrer une nouvelle activité dans la méthode onPostExecute() 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();
  }
}
 

Ensuite dans votre activité vous feriez:

 ProgressDialog progress = new ProgressDialog(this);
progress.setMessage("Loading...");
new MyTask(progress).execute();
 

3voto

Arun Points 1894

Lorsque vous démarrez un long processus en cours d'exécution sur Android, il est toujours conseillé de le faire sur un autre thread. Vous pouvez ensuite utiliser le thread d'INTERFACE utilisateur pour afficher une boîte de dialogue de progression. Vous ne pouvez pas afficher une boîte de dialogue de progression dans la même (UI) thread dans lequel le processus est en cours d'exécution.

Effectuez les opérations suivantes pour démarrer votre processus

pd = ProgressDialog.show(this, "Synchronizing data", "Please wait...");
Thread t = new Thread(this);
t.start();

Pour cela, votre activité doit mettre en œuvre des Exécutables 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
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X