我在 ViewPager 中有 3 个 fragment 。当我从 fragment 1滑动到3时, fragment 3正在刷新数据(重新执行所有方法),但是当我从1滑动到2或2到3时,下一个 fragment 不会刷新数据。
你能帮我理解为什么吗?怎么才能每次都刷新呢?
我的 Activity 扩展了基类 FragmentActivity,而 fragment 扩展了基类 Fragment。
最佳答案
ViewPager 默认使用 setOffscreenPageLimit(1)
,这意味着它将一个 View “缓存”到左侧,另一个 View 缓存到右侧,因此,如果您位于第二个 fragment 并转到第一个或第三个 fragment ,它将不会重新加载。如果您返回第 1 个而不是第 2 个,则第 3 个将被重新加载。
setOffscreenPageLimit(0)
产生警告(最小值必须为 1)。
解决方案是在 fragment 中使用 setUserVisibleHint
来检测它们何时变得可见,并在那里处理加载/刷新数据。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
// load data here
}else{
// fragment is no longer visible
}
}
此答案取自this SO answer .
关于java - 刷新 slider 中的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36638831/