38 votes

Android: ProgressDialog ne s'#39;t afficher

Je suis en train de créer un ProgressDialog pour Android-App (juste un exemple simple montrant à l'utilisateur que des choses qui se passe, pas de boutons ou quoi que ce soit), mais je ne peux pas obtenir de droit. J'ai été par le biais de forums et tutoriels ainsi que l'Exemple de Code fourni avec le SDK, mais en vain.

C'est ce que j'ai:

    btnSubmit.setOnClickListener(new View.OnClickListener() {
      public void onClick(View view) {
        (...)
          ProgressDialog pd = new ProgressDialog(MyApp.this);
          pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
          pd.setMessage("Working...");
          pd.setIndeterminate(true);
          pd.setCancelable(false);

          // now fetch the results
          (...long time calculations here...)

          // remove progress dialog
          pd.dismiss();

J'ai aussi essayé d'ajouter pd.show(); et foiré autour avec le paramètre en new ProgressDialog résultant en rien du tout (sauf les erreurs que le paramètre choisi de ne pas travailler), ce qui signifie: la ProgressDialog ne jamais se montrer. L'application continue de fonctionner comme si je n'ai jamais ajouté de la boîte de dialogue.

Je ne sais pas si je suis la création de la boîte de dialogue à la bonne place, je l'ai déplacé un peu autour de lui, mais qui, aussi, ne l'aide pas. Peut-être que je suis dans le mauvais contexte? Le code ci-dessus est à l'intérieur d' private ViewGroup _createInputForm() en MyApp.

Tout soupçon est apprécié,

Salutations, Select0r

42voto

RoflcoptrException Points 22111

vous devez appeler pd.show avant le long calcul commence et puis le calcul doit s'exécuter dans un thread séparé. Dès que ce fil est terminé, vous devez appeler pd.dismiss() pour fermer le dialogue prgoress.

ici vous pouvez voir un exemple:

le progressdialog est créé et affiché et un thread est appelé à exécuter un calcul lourd:

et voici le fil:

4voto

lory105 Points 1060

Progress Dialog ne s'affiche pas parce que vous devez utiliser un thread séparé. Les meilleures pratiques dans Android est d'utiliser AsyncTask ( fortement recommandé ). Voir aussi cette réponse.

3voto

Peter Stuifzand Points 3160

Ceci est également possible en utilisant AsyncTask. Cette classe crée un thread pour vous. Vous devriez le sous-classer et remplir la `` méthode.

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