【发布时间】:2012-12-04 08:27:00
【问题描述】:
我有一个小问题:我有一个带有一些页面的 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;
}
如果您需要更多内容,请告诉我。谢谢
【问题讨论】:
-
对我来说,这种stackoverflow.com/questions/17629463/… 方法非常适合!
标签: android caching android-viewpager adapter fragment