我遇到的基本问题是,当我每次返回特定片段时,我都试图获取刷新函数来执行。
到目前为止,我一直在使用利用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(){
}
}