您的位置:首页 > 其它

笔记:fragment重复加载和fragment在viewpage中预加载的问题

2016-05-06 13:14 302 查看
场景:

  viewpage中嵌套fragment来回切换时,fragment每次都会执行oncreate()方法重新加载;

  因为viewpage有预加载的机制,在fragment还未显示时,就会提前加载

  

解决方案

  -重复加载问题:

   - 在fragment的onCreateView()方法中判断是否已经创建:

if (fragmentView == null) {
fragmentView = inflater.inflate(
R.layout.fragment_layout, container,
false);
initData();
}

ViewGroup parent = (ViewGroup) fragmentView.getParent();
if (parent != null) {
parent.removeView(fragmentView);
}
return fragmentView;


  -预加载问题:

   - 根据当前fragment的UI是否显示来判断是否加载数据,使用setUserVisibleHint()方法,fragment可 见时才进行数据加载操作,即Fragment的懒加载。但是此方法会先与onCreateView()方法执行,因此在视图未初始化的时候做处理,会有空指针的异常。结合上面避免重复加载的方法,当已经有初始化的数据时data != null,说明已经初始化视图,可以加载数据

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (getUserVisibleHint() && data != null) {

} else {

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: