Frage

Ich habe eine TabActivity Umsetzung TabContentFactory bekommt, die eine AsyncTask in onCreate beginnt (), um die Daten für die Registerkarten zu holen. Wenn die AsyncTask beendet hat, kann OnPostExecute () aktualisiert direkt das UI-Elemente, nicht wahr? Bedeutung, da diese Methode läuft in der UI-Thread keine weitere Thread-Synchronisation erforderlich wäre, wenn UI-Elemente zugreifen?

Wie auch immer, ich habe das Problem ist, dass mein UI-Thread ruft createTabContent () in der TabActivity während der AsyncTask noch beschäftigt ist. Ich habe zumindest eine Lasche hinzuzufügen, oder ich bekomme eine Nullpointer. Aber wie ich nur Tabs hinzufügen, wenn mein AsyncTask beendet hat und die ProgressDialog wurde abgewiesen?

würde ich mich freuen, wenn jemand ...

helfen könnte
War es hilfreich?

Lösung

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?

Richtig.

Anyway, the problem I have is that my UI-Thread calls createTabContent() in the
TabActivity while the AsyncTask is still busy.

Wenn Sie Update UI müssen während AsyncTask noch im Hintergrund läuft, dann überschreibt AsyncTask.onProgressUpdate (..) und dann ruft AsyncTask.publishProgress (..) aus dem 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?

Ich verstehe das nicht. Könnten Sie bitte näher erläutern?

Wie auch immer, Uhr für diese Dinge:

  1. Start AsyncTask erst nach TabActivity vollständig erstellt. Starten Sie es aus onPostCreate () anstelle von onCreate (). Dies könnte eine Quelle Ihres Nullpointer sein.
  2. Sie können alle Aktivitäten von UI-Thread aktualisieren innerhalb AsyncTask.onPostExecute (..)
  3. Wenn Sie Update UI müssen während AsyncTask noch im Hintergrund läuft, dann rufen AsyncTask.publishProgress (..) aus dem AsyncTask.doInBackground (..)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top