Comment montrer ProgressDialog à travers le lancement d'une nouvelle Activité?

Objectif: Avoir un ProgressDialog qui affiche "Chargement..." jusqu'à la prochaine Activité est entièrement chargé et affiché sur l'écran.

Essayé avec ProgressDialog contexte et de l'activité de l'ensemble de départ de l'Activité. Aussi essayé avec getcontexteapplication() et getParentContext(). Des Exceptions sur les deux dernières approches. Besoin pour ce faire comme destination Activité est lente à se rendre en raison de la non-Mise en page simple fichier. (Ne peut pas résoudre ça, maintenant, en raison de problèmes d'organisation.) S'avère que la destination de l'Activité dure 1 à 2 secondes pour OnCreate et ensuite l'écran devient noir pendant plus de 5 secondes alors qu'il peint. Le rendu est juste lent. N'en revue avec la Hiérarchie de Spectateur et de voir beaucoup de boules rouges, mais ne peut pas réparer maintenant.

Lire sur certaines liés, mais n'ai pas trouvé une solution. E. g. Quelle est la différence entre les différentes méthodes pour obtenir un Contexte?

E. g. ces deux crash. À l'aide de la "ce" de la source de l'Activité ne fonctionne pas non plus.

//Context parentContext = this.getParent().getBaseContext();    
Context parentContext = this.getApplicationContext();
ProgressDialogMenuable theProgressDialog = new ProgressDialogMenuable(parentContext,this);
theProgressDialog.setTitle("yeeha");
theProgressDialog.setMessage("weewah");
theProgressDialog.setIndeterminate(true);
theProgressDialog.setCancelable(true);
theProgressDialog.show();

Aussi, bizarrement, rien ne se passe lorsque je fais ceci:
theProgressDialog.show();
ActivityHelper.changeActivity(ce, v, InsMyHoldingsActivity.class, extraMap, -1, -1);
L'utilisateur clique sur le bouton à côté de l'activité, mais la ProgressDialog conflits avec l'Activité de lancement et rien de ce qui se passe en réalité autre que le bouton devient jaune ontouch. Bouton ci-dessous fonctionne. retrait ProgressDialog création et il fonctionne. Pas de messages sur la console connecté. Un peu offputting le développeur pour vous.

Créer une tâche asynchrone dans Votre nouvelle activité, faire tout le traitement, définir les éléments de mise en page dans le post-exécution. Afficher la barre de progression sur créer, et de rejeter dans l'après exécution.
Laissez-moi essayer. Situation où je ne peux que sous-classe (pas de changement) à destination de l'Activité. Donc, cela pourrait fonctionner.
Si vous publiez en tant que solution, alors je vais accepter. Je ne pense pas que le ProgressDialog peut s'étendre à des Activités de cycle de vie (plus d'une Activité); mais on peut en effet à l'utilisateur avec cette approche, On PDlg de l'Activité par Un, puis un autre dans ActivityB comme vous l'avez dit. J'ai utilisé une syntaxe différente de la AsynTask mais sémantiquement c'est la même chose je crois. final Runnable r = new Runnable() { public void run() { setupActivityDisplay(); // thig qui prend un certain temps theProgressDialog.rejeter(); } }; (new Handler()).postDelayed(r, 1000);
Plus de recherches suggèrent qu'il y a aucun moyen de montrer une ProgressDialog avant l'Activité Mise en page en cours d'achèvement. Il suffit de mettre, avec un plan complexe, le utilisateur voit apparaître un écran noir (vide) depuis un certain temps. Encore en recherche.
Il y a une façon de montrer la ProgressDialog. Après onCreate. Il suffit de retirer la mise en page setContentView( appel de onCreate. Le faire plus tard.

OriginalL'auteur maxweber | 2012-10-22