Фрагменты в ViewPager воссоздаются

У меня есть FragmentActivity с контейнером, где я ViewPager Fragment с ViewPager . В ViewPager меня есть 3 Fragment :

 [MainActivity] [ViewPagerFragment] [Fragment1][Fragment2][Fragment3] 

Когда пользователь нажимает кнопку на Fragment1 / Fragment2 / Fragment3 , я заменяю ViewPagerFragment на OtherFragment , поэтому иерархия выглядит следующим образом:

 [MainActivity] [OtherFragment] 

Когда я нажимаю кнопку « Назад» , ViewPagerFragment воссоздается, а также его вложенный Fragment s ( Fragment1 / Fragment2 / Fragment3 ).

Есть ли способ сохранить состояние ViewPagerFragment и его вложенных фрагментов? Чтобы фрагменты сохраняли свое состояние и не воссоздавались?

Я установил setRetainInstance(true) для ViewPagerFragment , но похоже, что он не вступает в силу.

Solutions Collecting From Web of "Фрагменты в ViewPager воссоздаются"

Просто установите это: – где аргумент – количество фрагментов в ViewPager

mViewPager.setOffscreenPageLimit (3);

ViewPager довольно ревностно останавливает то, что в настоящее время не использует, и это именно то, что здесь происходит. Поведение по умолчанию заключается в том, что ViewPager «поддерживает» одну страницу с каждой стороны просматриваемой страницы и уничтожает остальные. Следовательно, в вашем трехстраничном представлении страница 3 уничтожается при выборе страницы 1, а затем, когда страница 2 повторно выбирается, страница 3 воссоздается. Как вы заметили, страница 2 только имеет onCreate (..), вызванную один раз, потому что она всегда смежна или находится в текущей выбранной странице.

Чтобы решить эту проблему, просто установите ViewPager.setOffscreenPageLimit (2). Затем ViewPager будет хранить все ваши фрагменты. Очевидно, это не очень хорошая идея для большого количества фрагментов, но для вашего дела это должно быть хорошо.