Когда вызывается getItem FragmentPagerAdapter?

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

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

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

Благодаря!

Solutions Collecting From Web of "Когда вызывается getItem FragmentPagerAdapter?"

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

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

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

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

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

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