我遇到的基本问题是我试图在每次返回特定 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/