32 votes

Android DialogFragment barre de progression

J'ai cherché partout et je ne peux pas trouver une solution à ce problème.

Fondamentalement, j'ai un écran de connexion et je vais essayer d'obtenir un progrès spinner montrer alors qu'il est connecté au serveur (via un thread), et puis la rejeter après la connexion est réussie. Il doit travailler tout en changeant d'orientation.

Je suis l'aide d' DialogFragment avec le Android package de compatibilité pour faire une barre de progression (ne peut pas trouver toute la documentation sur elle, seulement pour base\boîte de dialogue d'alerte), car showDialog() est obsolète maintenant. Droit maintenant, j'ai juste afficher un message personnalisé de la boîte de connexion spinner.

En Résumé:

  • Comment puis-je configurer un Progrès spinner avec DialogFragment.
  • Comment puis-je le faire disparaître dans un autre thread, après les changements d'orientation.

60voto

Philipp Reichart Points 10371

Pour montrer un progrès spinner, de substituer DialogFragment.onCreateDialog() dans votre boîte de dialogue fragment comme ça (pas besoin de surcharger onCreateView()):

@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
    final ProgressDialog dialog = new ProgressDialog(getActivity());
    //
    dialog.setTitle(R.string.login_title);
    dialog.setMessage(getString(R.string.login_message));
    dialog.setIndeterminate(true);
    dialog.setCancelable(false);
    // etc...
    return dialog;
}

Comme pour rejeter cette boîte de dialogue fragment de quelque part d'autre, vous aurez besoin d'obtenir une prise de FragmentManager (à partir de l'intérieur de votre prochain FragmentActivity ou Fragment) et appelez - popBackStack() sur celui-ci (si vous n'avez pas à faire toute autre fragment de la transaction dans l'intervalle).

Si il n'y a plus d'étapes/fragment de transactions entre votre boîte de dialogue de progression fragment et de l'activité suivante, vous aurez probablement besoin l'un de l'autre popBackStack(...) méthodes qui prennent un ID ou une étiquette à la pop tout en haut de votre boîte de dialogue de progression fragment hors de la pile.

20voto

LOG_TAG Points 4506

Je sais que c'est une vieille question, mais je veux partager beaucoup meilleure solution pour cela

Selon de Développement Android Protip:

"Stop à l'aide de ProgressDialog,Inline indicateurs sont à votre ami"

Roman Nurik états:

enter image description here

Ce rapide. Cesser d'utiliser ProgressDialog et des autres modes de transport de chargement les indicateurs. Ils sont extrêmement interruptive et ennuyeux, surtout quand:

  • Vous en voyez un à chaque fois que vous changer d'onglet.

  • Vous ne pouvez pas Revenir d'entre eux.

  • Ils disent "s'il vous Plaît attendre." Non merci, je préfère simplement désinstaller.

Afficher les indicateurs de chargement en ligne avec votre contenu (par exemple http://developer.android.com/training/animation/crossfade.html) ou, mieux encore, de la charge de petites quantités de données dans le arrière-plan de sorte que vous pouvez minimiser le besoin de montrer encore une chargement l'indicateur.

Plus sur le progrès et l'activité dans les lignes directrices de conception.

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