I use ViewPager to store fragments and I just want to download data when I come to this fragment, so I do like this
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
}
}
But now in androidx, setUserVisibleHint
is deprecated so what is the best solution here?
You can use onResume and onPause methods instead of setUserVisibleHint. For this you have to change default behaviour in FragmentPagerAdapter constructor.
FragmentPagerAdapter(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)
Checkout this https://developer.android.com/reference/androidx/fragment/app/FragmentPagerAdapter#BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT