java - onResume() - 用于在多个 CHILD fragment 之间切换

标签 java android android-fragments

我遇到的基本问题是我试图在每次返回特定 fragment 时执行刷新函数。

到目前为止,我一直在使用 setUserVisibleHint() 的解决方法,如下所示。

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser) {
        refresh();
    }
}

但是,这只在我的主 fragment 有问题的 fragment 之间切换时才有效。我想知道的是,当我从其他选项卡之一切换时,如何执行此代码?

非常感谢您的帮助。

最佳答案

根本原因:这是Android的一项功能,称为offscreen page limit,它将保留当前fragment两侧的fragment数量,默认值为1。在您的情况下,使用 setUserVisibleHint 不足以刷新数据。

解决方案:

public class YourFragment extends Fragment {

        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,Bundle savedInstanceState) {
            if (getUserVisibleHint()) { // fragment is visible to users.
                refresh();
            }
            return super.onCreateView(inflater, container, savedInstanceState);
        }

        @Override
        public void setUserVisibleHint(boolean isVisibleToUser) {
            super.setUserVisibleHint(isVisibleToUser);
            if (isVisibleToUser && isResumed()) { // fragment is visible to users
                refresh();
            }
        }

        public void refresh(){

        }
}

关于java - onResume() - 用于在多个 CHILD fragment 之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52134381/

相关文章:

java - 继承到子子类

Java : URLConnection setRequestProperty range issue relying on multithreaded process?

android - 更改可滚动 ListView 的背景颜色

安卓架构模式

android - 我正在尝试在我的 Android 应用程序中执行 SOQL 查询,但每次都会收到 AuthFailureError

Android - 使用 swipeview 将数据从一个 fragment 发送到另一个 fragment

java - 试图在 ArrayList<Float> 中找到最大元素,在 Java 中

Java 8 分组为对象集合

Android Apk提交目标

android - 在 fragment 中隐藏底部导航 View