java - 刷新 slider 中的 fragment

标签 java android android-fragments

我在 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/

相关文章:

java - 如何读取文件夹中的文件内容

android - 无法解析方法 .runOnUiThread

android - 创建新 fragment 与轮流从经理那里获取现有 fragment 之间的区别

android - 以编程方式截取整个屏幕的屏幕截图

android - 使用 CoordinatorLayout 隐藏工具栏,但在 fragment 上隐藏 RecyclerView

java - 将字符串输出创建到 SD 卡上可访问的文件时出现问题

java - 无法提取 Java Servlet 中的所有 cookie

java - Java 中的惯用 "First Last"=> "Last, First"

java - JDK 与 Android SDK (ASDK)?

android - 权限被拒绝(缺少互联网权限)