Intereting Posts
Не удается найти .idea / misc.xml при создании в Android Studio Веб-просмотр Android не воспроизводит видео, jwembedder Легкий способ переименовать проект в android DocumentsProvider: Что такое контент: //com.android.documentsui.recents/state И почему мне это не нравится? Хорошая практика создает анонимную AsyncTask для параллельного небольшого известного процесса замораживания? Пользовательский экран входящего / исходящего звонка в Android Применять специальную тему для пользовательского вида Android Получить ширину и высоту экрана Активность, расширяющая ActionBarActivity и YouTubeBaseActivity ExpandableListView показывает индикатор для групп без дочернего Почему я получаю эту строку зеленым цветом в Timeline: Activity_idle id: android.os.BinderProxy@41d2b6d8: 1933928? Проблемы с javadoc Просто запустил Java, должен ли я продолжить с 7 или 6, чтобы код для Android? Как изменить изображениеПросмотреть, когда звук заканчивается потоками Неисправность Backstack активности при разрушении деятельности

Фрагменты в 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 , но похоже, что он не вступает в силу.

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

mViewPager.setOffscreenPageLimit (3);

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

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