Android: TabActivity - Ne pas ajouter d'onglets avant AsyncTask a terminé
-
25-09-2019 - |
Question
J'ai une TabActivity mise en œuvre TabContentFactory, qui commence à récupérer les données d'un AsyncTask dans onCreate () pour les onglets. Lorsque le AsyncTask a terminé, onPostExecute () pourrait mettre à jour directement les éléments de l'interface utilisateur, non? Signification, puisque cette méthode fonctionne dans l'interface utilisateur-Enfilez sans autre thread-synchronisation sera nécessaire lors de l'accès aux éléments de l'interface utilisateur-?
Quoi qu'il en soit, le problème que j'ai est que mon UI-thread appelle createTabContent () dans le TabActivity alors que le AsyncTask est toujours occupé. Je dois ajouter au moins un onglet, ou je reçois un NullPointerException. Mais comment puis-je ajouter que les onglets lorsque mon AsyncTask a terminé et le ProgressDialog a été rejetée?
Je serais heureux si quelqu'un pourrait aider ...
La solution
When the AsyncTask has finished, onPostExecute() could directly update the
UI-elements, right? Meaning, since that method runs in the UI-Thread no further
thread-synchronization would be required when accessing UI-elements?
Droit .
Anyway, the problem I have is that my UI-Thread calls createTabContent() in the
TabActivity while the AsyncTask is still busy.
Si vous avez besoin de mettre à jour l'interface utilisateur alors que AsyncTask fonctionne toujours en arrière-plan, puis outrepasser AsyncTask.onProgressUpdate (..) puis appelez AsyncTask.publishProgress (..) à partir du AsyncTask.doInBackground (..).
I have to add at least one tab, or I get a NullPointerException. But how do I
only add tabs when my AsyncTask has finished and the ProgressDialog has been
dismissed?
Je ne comprends pas. Pourriez-vous s'il vous plaît expliquer plus en détail?
Quoi qu'il en soit, surveillez ces choses:
- Démarrer AsyncTask seulement après TabActivity est entièrement créé. Démarrer à partir onPostCreate () au lieu de onCreate (). Cela pourrait être une source de votre NullPointerException.
- Vous pouvez mettre à jour toutes les activités de thread d'interface utilisateur au sein AsyncTask.onPostExecute (..)
- Si vous avez besoin de mettre à jour l'interface utilisateur en AsyncTask est toujours en cours en arrière-plan, puis appelez AsyncTask.publishProgress (..) à partir du AsyncTask.doInBackground (..)