Mettre à jour le spinner de rafraîchissement de la barre d'action dans onResume ()

StackOverflow https://stackoverflow.com/questions/9382909

  •  28-10-2019
  •  | 
  •  

Question

Nous rencontrons un problème vraiment douloureux avec les nichants ActionBar Ici, et je me demandais si quelqu'un d'autre avait trouvé une solution. Le problème lui-même est assez simple:

Nous déclenchons fréquemment des tâches de fond en activité onCreate ou onResume, car la plupart de nos écrans doivent afficher des données chargées à partir d'un service Web. Pendant que ces tâches sont en cours d'exécution, nous montrons le spirner de rafraîchissement de la barre d'action et l'animons. Le problème est: OnCreate et OnResume sont exécutés avant onCreateOptionsMenu est, donc au moment où nous commençons la tâche, le spinner de rafraîchissement n'existe même pas. Par conséquent, il ne s'anime pas.

Je ne vois aucun moyen simple de contourner cela. Je suppose que nous pourrions garder les informations sur une tâche engendrée dans OnCreate, et dès que la barre d'action devient disponible, mettez-les à jour en conséquence. Mais encore, je ne peux pas croire un cas d'utilisation aussi courant que cela est si difficile à faire avec ActionBar?

Était-ce utile?

La solution

Alors j'ai essayé d'utiliser invalidateOptionsMenu comme décrit en question Comment mettre à jour un élément de menu affiché dans la barre d'action?, mais cela n'a eu aucun effet.

J'ai fini par suivre les mises à jour en attente de la barre d'action en utilisant un drapeau booléen simple. Chaque fois qu'il y a des appels pour actualiser son état, je définis l'indicateur, puis je vérifie et le réinitialise une fois la barre créée et effectue des mises à jour en attente. Fonctionne très bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top