本篇文章主要解決,在我們切換tabLayout中的fragment時,防止界面被多次調用,接下來,直接貼碼。。。本篇完美解決了這個問題,每次進入界面纔會被調用,也就是隻調用了一次
1.fragment中初始化一個變量
private boolean firstLoad = false;
2.在fragment的onCreateView中做處理
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.xxx,null);
firstLoad = true;//視圖創建完成,將變量置爲true
if (getUserVisibleHint()) {//判斷Fragment是否可見
//初始化數據
initDatas();
firstLoad = false;//將變量置爲false
}
return view;
}
3.判斷setUserVisibleHint()是否是第一次進入界面,當退出當前頁面時銷燬
@Override
public void onDestroyView() {
super.onDestroyView();
firstLoad = false;//視圖銷燬將變量置爲false
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (firstLoad && isVisibleToUser) {//視圖變爲可見並且是第一次加載
//初始化數據
initDatas();
firstLoad = false;
}
}
4.初始化數據,做數據處理
//初始化數據
private void initDatas() {
}
最後完整的代碼,下貼:
public class LoadFragment extends Fragment{
private boolean firstLoad = false;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.xxx,null);
firstLoad = true;//視圖創建完成,將變量置爲true
if (getUserVisibleHint()) {//判斷Fragment是否可見
//初始化數據
initDatas();
firstLoad = false;//將變量置爲false
}
return view;
}
}
@Override
public void onDestroyView() {
super.onDestroyView();
firstLoad = false;//視圖銷燬將變量置爲false
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (firstLoad && isVisibleToUser) {//視圖變爲可見並且是第一次加載
//初始化數據
initDatas();
firstLoad = false;
}
}
//初始化數據
private void initDatas() {
}