Quelle est la meilleure façon de montrer un chargement spinner, tandis que l'application est en attente d'une réponse du serveur?
Cela peut être fait par programmation? De sorte que je n'ai pas à ajouter de la charge spinner dans le fichier xml?
Quelle est la meilleure façon de montrer un chargement spinner, tandis que l'application est en attente d'une réponse du serveur?
Cela peut être fait par programmation? De sorte que je n'ai pas à ajouter de la charge spinner dans le fichier xml?
ProgressDialog progress = new ProgressDialog(this);
progress.setTitle("Loading");
progress.setMessage("Wait while loading...");
progress.show();
// To dismiss the dialog
progress.dismiss();
OU
ProgressDialog.show(this, "Loading", "Wait while loading...");
Par la voie, Spinner a un sens différent dans Android. (C'est comme l'sélectionnez le menu déroulant en HTML)
Utiliser ProgressDialog
ProgressDialog.show(Context context, CharSequence title, CharSequence message);
Toutefois, cela est considéré comme un anti-modèle aujourd'hui (2013): http://www.youtube.com/watch?v=pEGWcMTxs3I
En fait, si vous êtes en attente de réponse d'un serveur, il doit être fait par programmation. Vous pouvez créer une boîte de dialogue de progression et de le rejeter, mais là encore ce n'est pas "android".
Actuellement, la méthode recommandée est d'utiliser un DialogFragment :
public class MySpinnerDialog extends DialogFragment {
public MySpinnerDialog() {
// use empty constructors. If something is needed use onCreate's
}
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
_dialog = new ProgressDialog(getActivity());
this.setStyle(STYLE_NO_TITLE, getTheme()); // You can use styles or inflate a view
_dialog.setMessage("Spinning.."); // set your messages if not inflated from XML
dlgAlert.setCancelable(false);
return _dialog;
}
}
Ensuite, dans votre activité, vous définissez votre Fragment de gestionnaire et d' afficher la boîte de dialogue une fois le temps d'attente pour le serveur:
FragmentManager fm = getSupportFragmentManager();
MySpinnerDialog myInstance = new MySpinnerDialog();
}
myInstance.show(fm, "some_tag");
Une fois que votre serveur a répondu complet vous sera rejetée:
myInstance.dismiss()
Rappelez-vous que le progressdialog est une toupie ou d'une barre de progression en fonction des attributs, pour en savoir plus sur l' api guide
Voilà comment j'ai fait ce donc qu'une seule boîte de dialogue de progression peuvent être ouvertes en même temps. Basé sur la réponse de Suraj Bajaj
private ProgressDialog progress;
public void showLoadingDialog() {
if (progress == null) {
progress = new ProgressDialog(this);
progress.setTitle(getString(R.string.loading_title));
progress.setMessage(getString(R.string.loading_message));
}
progress.show();
}
public void dismissLoadingDialog() {
if (progress != null && progress.isShowing()) {
progress.dismiss();
}
}
J'ai également eu à utiliser
protected void onResume() {
dismissLoadingDialog();
super.onResume();
}
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.