Android RecyclerView, который находится во Фрагменте, который находится в ViewPager, не перезагружает / обновляет представления, если установлено setOffscreenPageLimit

У меня есть RecyclerView в Fragment который снова находится в ViewPager , когда я ViewPager между страницами ViewPager , я вижу, что onDetach of Fragment , но по какой-то причине RecyclerView по-прежнему присутствует в этой конкретной позиции для Fragment в ViewPager , Положение прокрутки RecyclerView сохраняется, когда я возвращаюсь к отдельному фрагменту.

Я использую FragmentStatePagerAdapter для ViewPager и я возвращаю POSITION_NONE из getItemPosition() но это не имеет никакого эффекта.

Пожалуйста, помогите мне понять проблему здесь.

Solutions Collecting From Web of "Android RecyclerView, который находится во Фрагменте, который находится в ViewPager, не перезагружает / обновляет представления, если установлено setOffscreenPageLimit"

Попробуйте это.

1) MyAdapter extends FragmentStatePagerAdapter

2) Установите Adapter из фрагмента с помощью getChildFragmentManager() например: mViewPager.setAdapter(new MyAdapter(getChildFragmentManager(), getActivity(), this))

3) Из метода ViewPagerFrgment Override setUserVisibleHint

 @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { //Update Recyclerview } else { } } 

Это потому, что viewpager использует кэширование mecanism. Прочитайте эту статью:

http://doublenegative.com/fragment-state-restoration-and-the-fragmentstatepageradapter/

FragmentStatePagerAdapter сохраняет состояние и уничтожает фрагменты; Он также восстанавливает состояние, когда фрагменты воссоздаются, что восстанавливает состояние recycleview (положение прокрутки).

От конечного пользователя это то же поведение, что и использование FragmentPageAdapter который сохраняет фрагменты в памяти.

Это нормальное и обычно желаемое поведение.