Je voudrais montrer une boîte de dialogue de progression dans un fragment de dialogue.
Cependant, lorsque j'utilise ce code p> 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. P> Qu'est-ce que j'ai fait de mal? p> p>
7 Réponses :
Utilisez la barre de progression dans votre fragment de dialogue. Ajouter une vue de progression dans votre code XML.
Dans votre code: p> lorsque la finition: p> progressBar.hide();
ou stry> p> sur les données chargées, p> maintenant strong>, 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. P> p>
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; } }
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 code> donné un fragment de progression
progressialogfragment code>?
Vous devriez ajouter le progresssialogfragment code> au fragmentManager code> avec une balise et l'appel
fragmentmanager.findfragmentbyTag code> pour la localiser à nouveau.
La partie la plus importante est, comment l'utiliser, je demande comme développeur d'Android débutant.
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(); } }
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.
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 code> avant code> avant Méthode de cycle de vie Onstart code>. Afficher la boîte de dialogue
Progression code> dans
méthode onresume code>. P>
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();
}
Utilisez simplement cette classe comme boîte de dialogue de progression .... utilise .... p>