少し問題があります。いくつかのページを持つ ViewPager があり、FragmentStatePagerAdapter を使用してデータを処理します。たとえば、縦向きでは ViewPager 用に 20 ページあり、横向きでは ViewPager 用に 10 ページしかありません。したがって、向きを変更すると、異なるデータで新しいアダプターを作成します。
理由を少し説明します。1 つの画像を縦向きに、2 つを横向きに表示しますが、常にすべてカウントします。表示する写真が 10 枚ある場合、縦向きに 10 枚、横向きに 5 枚 (常に 2 枚) あります。
しかし、今は奇妙なバグがあります: インデックス 5 でランドスケープにいてデバイスを回すと、ViewPager の現在のページが 10 に設定されます。もう一度戻すと、5 ページにいます。ViewPage を今ページにスワイプすると10 アダプターのメソッド getItem が呼び出されることはなく、ViewPage には、横向きの 2 枚ではなく縦向きの写真が 1 枚表示されます。これはどのように起こりますか?アダプターまたは ViewPager にキャッシュはありますか? アクティビティの onCreate では、ViewPager のアダプターとデータ (パスを含む文字列のみ) がすべて新しく作成されます。では、この本当に恐ろしい「機能」を修正する方法はありますか?
ここにいくつかのコードがあります:
作成時:
mViewPagerAdapter = new ReaderPageViewAdapter(getSupportFragmentManager(), getBaseContext(), mCurrentDocument.mPages, getResources()
.getConfiguration().orientation);
mPageReader = (ReaderViewPager) findViewById(R.id.pager);
mPageReader.setAdapter(mViewPagerAdapter);
アダプタ 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;
}
さらに何か必要な場合は、教えてください。ありがとう