我遇到的基本问题是,当我每次返回特定片段时,我都试图获取刷新函数来执行。

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

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


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

帮助将不胜感激。

最佳答案

根本原因:这是Android的一项功能,称为offscreen page limit,它将保留当前片段两侧的片段数,默认值为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(){

        }
}

09-07 14:46