我使用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)
checkout 此https://developer.android.com/reference/androidx/fragment/app/FragmentPagerAdapter#BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT

10-08 13:56