7
votes

Affichage de la boîte de dialogue de progrès dans Dialogfagment

Je voudrais montrer une boîte de dialogue de progression dans un fragment de dialogue.

Cependant, lorsque j'utilise ce code xxx

La boîte de dialogue de progression est affichée dans le fragment qui Appelé le dialogue, pas dans la boîte de dialogue elle-même.

Qu'est-ce que j'ai fait de mal?


0 commentaires

7 Réponses :


1
votes

Utilisez la barre de progression dans votre fragment de dialogue. Ajouter une vue de progression dans votre code XML.

Dans votre code: p> xxx pré>

lorsque la finition: p>

 progressBar.hide();


0 commentaires

2
votes

Essayez ceci: xxx

ou

si dynamiquement en utilisant progresssialog; xxx

sur les données chargées, xxx

maintenant , si la barre de progression n'est pas Afficher dans votre boîte de dialogue, vous devrez définir une boîte de dialogue personnalisée et définir votre barre de progression à l'intérieur de cette boîte de dialogue personnalisée.


0 commentaires

22
votes

Ici vous allez.

import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;


public class ProgressDialogFragment extends DialogFragment
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setCancelable(false);
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState)
    {
        ProgressDialog dialog = new ProgressDialog(getActivity(), getTheme());
        dialog.setTitle(getString(R.string.pleaseWait));
        dialog.setMessage(getString(R.string.webpage_being_loaded));
        dialog.setIndeterminate(true);
        dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        return dialog;
    }
}


5 commentaires

Comment cela est-il censé fonctionner si vous appelez Retour Super.OncreateDialog ()? Vous ne retournez pas votre boîte de dialogue de progrès créée.


Merci Yar, corrigé la faute de frappe.


Comment accéderiez-vous à la boîte de dialogue pour signaler les progrès de asynctack.onprogressUpdate donné un fragment de progression progressialogfragment ?


Vous devriez ajouter le progresssialogfragment au fragmentManager avec une balise et l'appel fragmentmanager.findfragmentbyTag pour la localiser à nouveau.


La partie la plus importante est, comment l'utiliser, je demande comme développeur d'Android débutant.



5
votes

Voici un fragment de boîte de dialogue de chargement simple qui joue un gif en tant qu'amimation digue

 public void showLoadingDialog() {
      LoadingDialogFragment fragment = (LoadingDialogFragment) getSupportFragmentManager().findFragmentByTag(LoadingDialogFragment.FRAGMENT_TAG);
      if (fragment == null) {
         fragment = new LoadingDialogFragment();
         fragment.setCancelable(false);
         getSupportFragmentManager().beginTransaction()
                                    .add(fragment, LoadingDialogFragment.FRAGMENT_TAG)
                                    .commitAllowingStateLoss();

         // fragment.show(getSupportFragmentManager().beginTransaction(), LoadingDialogFragment.FRAGMENT_TAG);
      }
   }

   public void hideLoadingDialog() {
      LoadingDialogFragment fragment = (LoadingDialogFragment) getSupportFragmentManager().findFragmentByTag(LoadingDialogFragment.FRAGMENT_TAG);
      if (fragment != null) {
         // fragment.dismissAllowingStateLoss();
         getSupportFragmentManager().beginTransaction().remove(fragment).commitAllowingStateLoss();
      }
   }


3 commentaires

Le problème est que lorsque vous essayez de rejeter la boîte de dialogue sur les loisirs d'activité. L'ancien dialogue fragment est déjà détruit, le nouveau n'est pas encore créé. Alors, quelle est la manière fiable de rejeter un dialogue?


@savepopulation, pourquoi ce n'est pas une bonne pratique pour montrer un fragment de dialogue pour les opérations asynchrones telles que la mise en réseau?


Étant donné que lorsque vous bloquez l'interface utilisateur avec un fragment de dialogue, l'utilisateur ne peut pas naviguer vers un autre écran ou revenir en arrière ou do STG sinon et attend jusqu'à la fin de votre opération de réseau.



1
votes

Je sais que c'est un article très ancien, mais je veux dire une solution. Si je ne me trompe pas, vous essayez de montrer votre boîte de dialogue avant avant Méthode de cycle de vie Onstart . Afficher la boîte de dialogue Progression dans méthode onresume .


0 commentaires

2
votes

Afficher la méthode ProgressDialog dans Onstart Strort> Inside Dialogmentfragment Strong> Classe

@Override
public void onStart() {
    super.onStart();
    ProgressDialog prog = new ProgressDialog(ctx);
    prog.setTitle(getString(R.string.pleaseWait));
    prog.setMessage(getString(R.string.webpage_being_loaded));       
    prog.setCancelable(false);
    prog.setIndeterminate(true);
    prog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    prog.show();
}


0 commentaires

0
votes

Utilisez simplement cette classe comme boîte de dialogue de progression .... xxx

utilise .... xxx


0 commentaires