在 AndroidX 中弃用 setUserVisibleHint 时加载数据
Load data when setUserVisibleHint is deprecated in AndroidX
我是用ViewPager来存储分片的,我就是想在到这个分片的时候下载数据,所以我是这样的
public abstract class ModelFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,Bundle savedInstanceState) {
if(getUserVisibleHint()){ // fragment is visible
loadData();
}
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser && isResumed()) {
loadData();
}
}
public void loadData(){
// data for fragment when it visible here
}
}
但现在在 androidx 中,setUserVisibleHint
已被弃用,那么最好的解决方案是什么?
您可以使用 onResume 和 onPause 方法代替 setUserVisibleHint。为此,您必须更改 FragmentPagerAdapter 构造函数中的默认行为。
FragmentPagerAdapter(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)
我是用ViewPager来存储分片的,我就是想在到这个分片的时候下载数据,所以我是这样的
public abstract class ModelFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,Bundle savedInstanceState) {
if(getUserVisibleHint()){ // fragment is visible
loadData();
}
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser && isResumed()) {
loadData();
}
}
public void loadData(){
// data for fragment when it visible here
}
}
但现在在 androidx 中,setUserVisibleHint
已被弃用,那么最好的解决方案是什么?
您可以使用 onResume 和 onPause 方法代替 setUserVisibleHint。为此,您必须更改 FragmentPagerAdapter 构造函数中的默认行为。
FragmentPagerAdapter(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)