2013-08-20 2 views
10

Я использую ViewPager, который содержит 3 фрагмента, каждый фрагмент загружает список. Проблема заключается в том, когда приложение запускается в первый раз, и я прокручиваю следующий фрагмент, этот фрагмент нуждается в загрузке (около 2 секунд), прежде чем его вид станет видимым. Это очень странное поведение. Все, что я хочу, - это когда приложение запустилось, все фрагменты в ViewPager должны быть готовы для пользователя, поэтому, когда они прокручивают фрагменты, нет времени ожидания. Как я могу это сделать?Предпросмотр фрагмента фрагмента в ViewPager при первом запуске

+0

Вы используете FragmentPageAdapter или FragmentStatePageAdapter? – Delyan

+0

Что вы можете сделать, это кэшировать адаптеры списка фрагментов в активности (или в пейджере). Это предотвратит перезагрузку адаптеров при каждой смене страницы. – AedonEtLIRA

+0

@Delyan Я использую FragmentPagerAdapter –

ответ

28

Просто позвоните setOffscreenPageLimit() в onCreate() (после инициализации ViewPager). OffscreenPageLimit устанавливает количество страниц, которые должны быть сохранены в обе стороны текущей страницы (в вашем случае 2). При этом все ваши фрагменты будут созданы.

(Другим (настоятельно рекомендуется) возможность заключается в том, чтобы повысить эффективность ваших списков или listadapters, так как время загрузки 2-х секунд не звучит хорошо)

+0

Фактически установка его на '2' уже обеспечит сохранение всех 3 фрагментов. Значение устанавливает количество страниц, которое должно быть сохранено, на ** с каждой стороны текущей страницы **, а не на общее количество страниц. –

+0

Да, я знаю. Но вы также можете установить предел '100', и он все еще работает ;-) Это был просто пример, конечно, он может установить ограничение на' 2', если он захочет. – Namenlos

+1

Ну и в таком случае, почему вы говорите * «в вашем случае ** 3 **" * в своем ответе? Это неправильно, и это сигнализирует мне, что вы не знали, поэтому я изначально добавил комментарий, чтобы указать на это. –