Просмотр пейджера будет загружать соседние фрагменты, даже если вы установите setOffscreenPageLimit равным 0. Так как, если значение меньше 1, они установят его как 1.
Так onCreate, onCreateView ... onResumeближайшие фрагменты будут вызваны до того, как они станут видимыми.
Так что просто загрузите ваши данные в setUserVisibleHint .
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(getView() != null && isVisibleToUser){
loadData();
}
}
Но существует проблема.Этот метод (setUserVisibleHint) будет вызываться перед onCreate нашего фрагмента.
Если вы получаете данные из аргументов. Мы получим эти данные из onCreate или onCreateView фрагмента.Таким образом, первый видимый фрагмент setUserVisibleHint будет вызван без данных для загрузки ( getView ()! = Null из вышеописанного метода).Для этого мы можем использовать
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = super.onCreateView(inflater,container,savedInstanceState);
// This is because for the first fragment to loadData, since the
// setUserVisibleHint is called before the onCreateView of the fragment.
if(getUserVisibleHint()){
loadData();
}
return view;
}
loadData - метод, который будет выполнять связывание данных с частью моего фрагмента.
Делая это, для первого видимого фрагмента loadDataбудет вызываться из onCreateView, а рядом с фрагментом будет вызываться из setUserVisibleHint.