Подтвердить что ты не робот

Когда вызов FragmentPagerAdapter getItem?

Я пишу приложение, использующее FragmentPagerAdapter. Фрагменты в адаптере необходимо обновлять в соответствии с внешними данными, но этого не происходит. Я заметил, что классы фрагментов создаются только один раз, в функции getItem:

@Override
public Fragment getItem(int position) {
    TabInfo info = mTabs.get(position);
    return Fragment.instantiate(mContext, info.clss.getName(),
                info.args);
}

Даже если я удалю класс и использую новый, ничего не помогает - этот метод вызывается только один раз, первый раз, когда вкладка заполняется, а затем никогда больше. У кого-нибудь есть идея, почему?

Спасибо!

4b9b3361

Ответ 1

getItem будет вызываться всякий раз, когда адаптеру нужен фрагмент, а фрагмент не существует.

Если фрагмент уже существует в FragmentManager, тогда нет необходимости его создавать, а getItem не нужно вызывать.

Чтобы обновить существующий фрагмент, вам нужно будет извлечь его из FragmentManager или адаптера и соответствующим образом обработать его.

По умолчанию viewpager создаст фрагменты для видимой страницы и рядом с ней. I. Для начала, фрагменты в позициях 1 и 2. Когда вы проведите пальцем по странице 2, фрагмент в позиции 3 будет создан и т.д.

Ответ 2

Чтобы быть более конкретным, чем приведенный выше ответ (что правильно!), getItem вызывается методом FragmentPagerAdapter instantiateItem (ViewGroup container, int position). На всякий случай это помогает:)

Ответ 3

Простое использование FragmentStatePagerAdapter вместо FragmentPagerAdapter