Android: Tabactivity - Добавить вкладки, прежде чем AsynCtaske закончится

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

Вопрос

У меня есть табуактивность, реализующая TABContentactory, которая запускает асинктюсс в OnCreate (), чтобы получить данные для вкладок. Когда асинктика закончила, OnPostexecute () может напрямую обновить пользовательские элементы, верно? Смысл, поскольку этот метод работает в пользовательском потоке, не требуется дальнейшее синхронизация потоков при доступе к элементам UII?

Во всяком случае, проблема, в которой у меня есть, это то, что мой пользовательский ui-Thread вызывает CreateTabcontent () в табакете, когда Asynctask все еще занята. Я должен добавить хотя бы одну вкладку, или я получаю nullpointerexception. Но как я добавляю только вкладки, когда моя асинктюсса закончилась, и прогрессированная программа была уволена?

Я был бы рад, если кто-то может помочь ...

Это было полезно?

Решение

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?

Верно.

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

Если вам нужно обновить пользовательский интерфейс, пока Asynctask по-прежнему работает в фоновом режиме, то переопределить asynctask.onprogressuppdate (..) а затем вызовите asynctask.publishProgress (..).

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?

Я не понимаю это. Не могли бы вы объяснить более подробно?

Во всяком случае, следите за такими вещами:

  1. Запустите асинктику только после того, как табака полностью создана. Начните его из OnPostCreate () вместо OnCreate (). Это может быть источником вашего NullPointerexception.
  2. Вы можете обновить любые виды деятельности от UI TOTEN в Asyncack.onpostexecute (..)
  3. Если вам нужно обновить пользовательский интерфейс, пока Asynctask по-прежнему работает в фоновом режиме, то вызовите ASYNCASK.PUBLISHPROGRESS (...) изнутри asynctask.doinbackground (..)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top