Mam mały problem: mam ViewPager z niektórymi stronami i używam FragmentStatePagerAdapter do obsługi danych. W portrecie mam na przykład 20 stron dla ViewPagera, a w krajobrazie mam tylko 10 stron dla ViewPagera. Tak więc przy zmianie orientacji tworzę nowy Adapter z różnymi Danymi.ViewPager + FragmentStatePagerAdapter + zmiana orientacji
Oto małe wyjaśnienie, dlaczego: Pokazuję jedno zdjęcie w pionie i dwa w krajobrazie, ale zawsze wszystkie w liczbie. Jeśli mam 10 zdjęć do pokazania, mam 10 w portretach i 5 w krajobrazie (zawsze dwa).
Ale teraz mam dziwny błąd: Kiedy jestem w Pejzażu na indeksie 5 i obracam urządzeniem, aktualna strona ViewPagera jest ustawiona na 10. Jeśli ponownie go włączyłem, to jestem na stronie 5. Jeśli przesunę Teraz ViewPage na stronę 10 metode getItem adaptera nigdy nie jest wywoływana, a ViewPage pokazuje mi zdjęcie jednopoziomowe, a nie dwa dla krajobrazu. Jak to się dzieje? Czy istnieje pamięć podręczna w adapterze lub w ViewPager? W onCreate of the Activity wszystko jest nowe, adapter, a także dane (tylko ciągi ze ścieżką) dla ViewPagera. Więc jakikolwiek pomysł naprawienia tej naprawdę przerażającej "funkcji"?
Oto niektóre kodu:
onCreate:
mViewPagerAdapter = new ReaderPageViewAdapter(getSupportFragmentManager(), getBaseContext(), mCurrentDocument.mPages, getResources()
.getConfiguration().orientation);
mPageReader = (ReaderViewPager) findViewById(R.id.pager);
mPageReader.setAdapter(mViewPagerAdapter);
adapter GetItem:
public Fragment getItem(final int index) {
final PageInfo pageInfo = mPages.get(index);
final PageFragment pageFragment = (PageFragment) PageFragment
.instantiate(mContext, pageInfo.mClss.getName(), pageInfo.mArgs);
return pageFragment;
}
Jeśli potrzebujesz czegoś więcej po prostu powiedz. Thanks
Dla mnie ten http://stackoverflow.com/questions/17629463/fragmentpageradapter-how-to-handle-orientation-changes approach pasuje idealnie! – r4m