0

У меня есть результаты поиска, отображаемые с помощью ViewPager & FragmentStatePageAdapter с каждым набором результатов в собственном фрагменте. Данные загружаются с использованием пользовательского AsyncTaskLoader. Я хочу сохранить позицию прокрутки при переходе на другую деятельность/в фоновый режим и вернуться.Пользовательский загрузчик - onStartLoading(), вызываемый при возврате фрагмента из backstack

Однако, по навигации к другой деятельности, и возвращаясь, загрузчик Менеджеры называет onStartLoading() загрузчика и излишне загружает данные:

protected void onStartLoading() { 
    if (results.size() > 0) { 
     Log.d(TAG, "onStartLoading() - deliver result"); 
     deliverResult(mResults); 
    } 

    if (takeContentChanged() || results.size() == 0) { 
     Log.d(TAG, "onStartLoading() - force load"); 
     // Needed for custom loaders 
     forceLoad(); 
    } 

// Register observer... 

} 

Это также означает, что я не могу восстановить позицию прокрутки (сохранен на сохранении фрагмента). Любой способ избежать этой перезагрузки на onResume фрагмента? Я вызываю initLoader() только в onActivityCreated(), который не вызывается, когда фрагмент восстанавливается из backstack.

Я использую v4 совместимость lib.

Спасибо!

+0

Как вы наполнение ListView? Давайте посмотрим ваши вызовы onLoadFinished() и onLoaderReset() в вашем фрагменте/активности. – kwazi

+0

onLoadFinished() вызывает fillAdapter после проверки ключевого слова поиска, не изменился. Мой onLoaderReset() просто очищает адаптер. – Hari

+0

Просто заметил это тоже ... Очень странно. :/Чтобы предотвратить это с помощью boolean, который проигнорировал результат в onLoadFinished(). – Patrick

ответ

0

Небольшой подсказку, чтобы проверить ... когда вы initLoader он может не позвонить onStartLoading, но он обязательно вызовет onLoadFinished (и доставит старые результаты).

Возможно, это происходит с вами?

Также попробуйте прочитать эту тему: Why is onLoadFinished called again after fragment resumed?

+0

, пожалуйста, завершите имена функций и ключевые слова в блоке кода со следующего раза, когда вы ответите –

 Смежные вопросы

  • Нет связанных вопросов^_^