6

我有一个 ViewPager、FragmentPagerAdpater 和 3 个片段来实现标签滑动视图。ViewPager 是否应该在第一次渲染后“记住”这 3 个视图?

我的问题是,一段时间后,这 3 个视图的布局被“遗忘”了。这意味着我需要再次更新它们,用户会在更新之前看到丑陋的部分。

viewpager 是否也有视图持有者模式?我可以使用什么技术来保留那些已经渲染的视图或防止它们被破坏?

4

2 回答 2

14

您可以ViewPager setOffscreenPageLimit()用来控制在内存中保留多少页并在滚动到之前预先创建多少页。默认情况下,它的值为 1,这意味着它会将当前页面保留在内存中以及它之前和之后的页面。根据您的页面大小(全屏或部分屏幕),将其增加到例如 2 将阻止在屏幕上构建页面。

于 2012-09-11T10:52:54.210 回答
2

在您的选项卡适配器中,只需覆盖 destroyItem() 方法并引用 super 语句

这将保存您的片段实例,并且它们不需要一次又一次地加载

@Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        // TODO Auto-generated method stub
        // super.destroyItem(container, position, object);
    }

像这样的东西。

于 2012-09-11T10:47:36.930 回答