Когда вызов FragmentPagerAdapter getItem?
Я пишу приложение, использующее FragmentPagerAdapter. Фрагменты в адаптере необходимо обновлять в соответствии с внешними данными, но этого не происходит. Я заметил, что классы фрагментов создаются только один раз, в функции getItem:
@Override
public Fragment getItem(int position) {
TabInfo info = mTabs.get(position);
return Fragment.instantiate(mContext, info.clss.getName(),
info.args);
}
Даже если я удалю класс и использую новый, ничего не помогает - этот метод вызывается только один раз, первый раз, когда вкладка заполняется, а затем никогда больше. У кого-нибудь есть идея, почему?
Спасибо!
Ответы
Ответ 1
getItem будет вызываться всякий раз, когда адаптеру нужен фрагмент, а фрагмент не существует.
Если фрагмент уже существует в FragmentManager, тогда нет необходимости его создавать, а getItem не нужно вызывать.
Чтобы обновить существующий фрагмент, вам нужно будет извлечь его из FragmentManager или адаптера и соответствующим образом обработать его.
По умолчанию viewpager создаст фрагменты для видимой страницы и рядом с ней. I. Для начала, фрагменты в позициях 1 и 2. Когда вы проведите пальцем по странице 2, фрагмент в позиции 3 будет создан и т.д.
Ответ 2
Чтобы быть более конкретным, чем приведенный выше ответ (что правильно!), getItem вызывается методом FragmentPagerAdapter instantiateItem (ViewGroup container, int position). На всякий случай это помогает:)
Ответ 3
Простое использование FragmentStatePagerAdapter
вместо FragmentPagerAdapter