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 ...

Était-ce utile?

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:

  1. 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.
  2. Vous pouvez mettre à jour toutes les activités de thread d'interface utilisateur au sein AsyncTask.onPostExecute (..)
  3. 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 (..)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top