我有一个小问题:我有一个带有一些页面的 ViewPager,我使用 FragmentStatePagerAdapter 来处理数据。例如,在纵向中,ViewPager 有 20 页,而在横向中,ViewPager 只有 10 页。因此,在方向更改时,我创建了一个具有不同数据的新适配器。
这里稍微解释一下原因:我显示一张纵向图像和两张横向图像,但总是计数。如果我有 10 张图片要显示,我有 10 张纵向和 5 张横向(总是两张)。
但是现在我有一个奇怪的错误:当我在索引 5 上的横向并转动设备时,ViewPager 的当前页面设置为 10。如果我再次将其转回,我在第 5 页。如果我现在滑动 ViewPage 到页面10 从不调用适配器的 getItem 方法,ViewPage 向我显示一张纵向图片,而不是横向的两张。这怎么可能发生?适配器或 ViewPager 中是否有缓存?在 Activity 的 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;
}
如果您需要更多东西,请告诉我。谢谢