ViewPager + FragmentStatePagerAdapter + Orientierungsänderung

Ich habe ein kleines Problem: Ich habe einen ViewPager mit einigen Seiten und verwende den FragmentStatePagerAdapter, um die Daten zu verarbeiten. Im Hochformat habe ich zum Beispiel 20 Seiten für den ViewPager und im Querformat habe ich nur 10 Seiten für den ViewPager. Bei einem Orientierungswechsel erstelle ich einen neuen Adapter mit anderen Daten.

Hier eine kleine Erklärung, warum: Ich zeige ein Bild im Hochformat und zwei im Querformat, aber immer alles zählt. Wenn ich 10 Bilder zu zeigen habe, habe ich 10 im Hochformat und 5 im Querformat (immer zwei).

Aber jetzt habe ich einen seltsamen Fehler: Wenn ich in Landscape auf Index 5 bin und das Gerät drehe, wird die aktuelle Seite des ViewPagers auf 10 gesetzt. Wenn ich sie wieder drehe, bin ich auf Seite 5. Wenn ich die ViewPage jetzt auf Seite wische 10 Die Methode getItem des Adapters wird nie aufgerufen, und die ViewPage zeigt mir das eine Porträtbild und nicht die beiden für Querformat. Wie kann das passieren? Befindet sich im Adapter oder im ViewPager ein Cache? Im onCreate of the Activity wird alles neu angelegt, der Adapter und auch die Daten (nur Strings mit Pfad) für den ViewPager. Irgendeine Idee, wie man dieses wirklich beängstigende "Feature" behebt?

Hier sind einige Codes:

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;
    }

Wenn Sie etwas mehr brauchen, sagen Sie es mir einfach. Vielen Dank

Antworten auf die Frage(3)

Ihre Antwort auf die Frage