ViewPager 刷新自己

ViewPager refreshing itself

我 运行 遇到了一些奇怪的问题。我已经按照教程 Here

实现了 ViewPagerTabStrip

它工作正常,我已经实现了三个选项卡。

在第一页 /tab 上,我从服务器加载数据并将其显示在 ListView

问题是,当我滑动到第三页然后再滑动回到第二页时,第一页的数据正在从服务器再次加载。(重新创建第一个选项卡的视图。)

从日志来看,这似乎是 ViewPager & Adapter 的行为。

当我们在第一个选项卡上时,它也会在后台创建第二个选项卡/页面的视图;当我们在第二个选项卡上时,它在后台为第三个选项卡做同样的事情,并在到达第三个选项卡时, 它没有为自己创建视图(即第三个选项卡)。

但是当我们滑回第二个标签时,它也重新创建了第一个标签的视图。

如何解决这个问题?我们无法在浏览选项卡时一次又一次地从服务器加载数据。

我的意思是,有什么方法可以在浏览标签页时停止重新加载数据(或重新创建视图)?它应该在创建 View Pager 的整个片段 activity 时而不是在滑动时加载数据。

请问有什么帮助吗?

是的,ViewPager 在销毁它们之前只在内存中保留一定数量的片段 - 这个默认数量通常是两个。因此,您要做的就是告诉 ViewPager 保留这些片段。

最简单的解决方案是简单地告诉 ViewPager 在内存中保留三个片段 as follows:

viewPager.setOffscreenPageLimit(3);

这里有一些关于如何保留片段的建议答案(不仅仅是这种方法)和默认行为背后的原因以及这些解决方案:

  • ViewPager and fragments — what's the right way to store fragment's state?
  • retain state of viewpager fragments android