Имам малко проблеми с внедряването на дизайн, базиран на множество ViewPagers.
На високо ниво имам FragmentActivity само с FrameLayout като съдържание. Имам 3 различни фрагмента, които искам да покажа. Всичките 3 са на цял екран и само 1 ще се използва наведнъж.
Фрагмент 1 е основен фрагмент с някои TextViews и ImageViews. Фрагмент 2 има ViewPager и FragmentPagerAdapter, които му подават няколко прости фрагмента. Фрагмент 3 има ViewPager и FragmentPagerAdapter, които го захранват с няколко прости фрагмента (които са различни от Фрагмент 2)
В моята FragmentActivity onCreate() получавам FragmentManager и започвам транзакция, за да заменя каквото и да е в моя FrameLayout с нов екземпляр на Fragment 2.
На този етап всичко работи според очакванията. Моят ViewPager във фрагмент 2 работи перфектно.
Сега имам опция от менюто, която замества Fragment 2 в моя FrameLayout с нов екземпляр на Fragment 3. Това също работи добре.
Проблемът възниква, когато се опитам да върна фрагмент 2 обратно във FrameLayout с друга транзакция за замяна. Виждам моя PagerIndicater в горната част, но страниците ми са празни.
Опитах просто да създам нов екземпляр на моя фрагмент 2 и да извикам транзакция за замяна. Също така се опитах да задам маркер на моите фрагменти, когато извикам replace и добавяне на проверка findFragmentByTag преди замяната ми, вместо да създавам нов екземпляр. И двете ми дадоха един и същ резултат от празни страници след втората ми замяна.
За справка Първият ми дизайн беше просто FragmentActivity с ViewPager и ViewIndicater. Имах само Фрагмент 2 и Фрагмент 3 от моето описание по-горе и опция от менюто за превключване между тях. За превключване имах дефинирани 2 различни FragmentPagerAdapters и просто извиках ViewPager.setAdapter, за да задам избрания FragmentPagerAdapter. Това работеше перфектно, но сега имам нужда от нов фрагмент от най-високо ниво, който изобщо не използва ViewPager. Ето защо реших да преместя моите ViewPagers в техните собствени фрагменти. Идеята ми е, че просто ще сменя моите фрагменти на FrameLayout.
В момента нямам моя код пред себе си, така че не мога да публикувам, но ще добавя код към въпроса си утре, за да улесня отговорите.