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

来源:互联网 发布:java断点调试快捷键 编辑:程序博客网 时间:2024/06/05 04:42

场景:
  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,说明已经初始化视图,可以加载数据

@Overridepublic void setUserVisibleHint(boolean isVisibleToUser) {    super.setUserVisibleHint(isVisibleToUser);    if (getUserVisibleHint() && data != null) {    } else {    }}
0 0
原创粉丝点击