Zmiana orientacji ViewPager + FragmentStatePagerAdapter +

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 ViewPager, aw krajobrazie mam tylko 10 stron dla ViewPager. Więc przy zmianie orientacji tworzę nowy adapter z różnymi danymi.

Oto małe wyjaśnienie, dlaczego: pokazuję jeden obraz w pionie i dwa w pejzażu, ale zawsze wszystko jest w porządku. Jeśli mam 10 zdjęć do pokazania, mam 10 w układzie pionowym i 5 w układzie poziomym (zawsze dwa).

Ale teraz mam dziwny błąd: gdy jestem w Pejzażu na indeksie 5 i włączam urządzenie, bieżąca strona ViewPager jest ustawiona na 10. Jeśli wrócę ponownie, jestem na stronie 5. Jeśli przesuję teraz ViewPage na stronę 10 Metoda getItem adaptera nigdy nie jest wywoływana, a ViewPage pokazuje mi jedno zdjęcie portretowe, a nie dwa dla krajobrazu. Jak to się może stać? Czy w adapterze lub ViewPager znajduje się pamięć podręczna? W onCreate of the Activity wszystko jest tworzone jako nowe, adapter, a także dane (tylko łańcuchy ze ścieżką) dla ViewPager. Czy masz pomysł, jak naprawić tę straszną „funkcję”?

Oto kod:

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, powiedz mi. Dzięki

questionAnswers(3)

yourAnswerToTheQuestion