Изменение вкладок медленное / медленное - Использование фрагментов - PullRequest
7 голосов
/ 11 февраля 2012

У меня есть активность, которая использует вкладки, а вкладки переключают фрагменты.Проблема в том, что при создании фрагмента загрузка занимает несколько секунд, поэтому переключение вкладок имеет задержку около 1 или 2 секунд.Чтобы исправить это, я пытался найти способ отобразить простую графику загрузки или даже диалог прогресса, чтобы вкладка мгновенно менялась и отображала что-то, указывающее, что что-то загружается, пока все не завершится.

My onCreateViewМетод фрагмента выглядит следующим образом:

FrameLayout fl;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    fl = (FrameLayout) inflater.inflate(R.layout.text_layout, container, false);

    doHeavyStuff();

    return fl;
 }

Я пытался вставить doHeavyStuff() в onStart(), но это ничего не помогло.И поток не поможет, потому что doHeavyStuff() включает в себя манипулирование представлениями / графическим интерфейсом.

Любые идеи о том, как я могу отобразить фрагмент и отобразить информацию "Загрузка" , в то время как все остальное загружается?

Спасибо!

Мэтт.

Ответы [ 2 ]

8 голосов
/ 11 февраля 2012

В onActivityCreated():

  • Начать progress bar (или любой прогресс, показывающий элементы / элементы пользовательского интерфейса).
  • Выполнить HeavyStuffDoingAsyncTask что объясняется ниже.

HeavyStuffDoingAsyncTask должно иметь:

  • doHeayStuff() логика, которая не обновляет пользовательский интерфейс в методе doInBackground.
  • вызов publishProgress() из doInBackground() каждый раз, когда вы хотите обновить интерфейс.
  • Реализация логики обновления пользовательского интерфейса в методе onProgressUpdate.
  • Остановить индикатор выполнения в методе onPostExecute.

Удачи.

1 голос
/ 09 декабря 2016

попробуйте установить

pager.setOffscreenPageLimit(no_of_fragments or pages);
...