当前位置:   article > 正文

android fragment ,fragment中的控件操作_fragment implements view.onclicklistener

fragment implements view.onclicklistener

 生命流程图:

onStart():Fragment无焦点但可见时,调用此方法.

onResume(): Fragment获取焦点且可见时,调用此方法.

onPause(): Fragment失去焦点但可见时,调用此方法.

onStop(): Fragment不可见时,调用此方法.

 

Activity1和Fragment1对应的生命启动关系:

 

Activity向Fragment传值:

Fragment向Activity传值:

接口,广播

Fragment和Fragment之间传值:

通过设置tag,一个fragment可以找到另一个fragment;

接口

 

创建fragment的两种方式:

1.静态创建(直接在xml说明fragment<>,且不能被删除)

2.动态创建(可进行多项操作);

 

使用fragment的方法:(注意最后要commit一下)

1.add即把fragment添加进去(注意fragment栈不能包含两个相同的fragment)

 2.replace即只有一层fragment,每次都是替换操作;

 

Fragment事务

 

 

 

ViewPager和fragment使用:

初始化adapter时候,传入fragment集合以及记得传入fragmentmanager;

FragmentPageAdapter和FragmentPageStateAdapter区别:

 

getFragmentManager和getSupportFragmentManager区别:

Android3.0以上用getFragmentManager  3.0以下用getSupportFragmentManager;

v4包的fragment兼容Android3.0以下,获取fragmentmanager只能通过getSupportFragmentManager;而 app包的fragment只支持3.0以上,通过获取getFragmentManager获取manager;

fragment中控件的实例化以及点击事件的注册:

1.通过实例化view对象来获取控件,进而注册控件的点击事件

 

2.直接获取通过getActivity获取context:

 注意要在onActivityCreated中进行这两个操作,而不是onCreateView中,因为activity的onCreate可能还没有执行,那么getActivity得到的是null;

 

fragment懒加载

1、为什么Fragment要懒加载

    这个原因有点简单,就是想在用户可见的情况下Fragment才进行一系列的逻辑操作,这样减少了手机的内存开销

2、那种场景需要Fragment要懒加载

ViewPager+Fragment联合使用的时候。有时候在ViewPager的第一页有很多网络请求,第二页也还是有很多网络请求。而ViewPager默认情况是进行预加载前后两页(共管理三个页面)的,意思就是ViewPager的第一页和第二页的网络请求都是同时发起的,这种情况下我们手机的内存消耗也多,而网络不好的时候用户体验也不要,于是就想到了Fragment懒加载;

  1. public abstract class BaseFragment extends Fragment implements View.OnClickListener {
  2. protected View mContentView;
  3. /**
  4. * 控件是否初始化完成
  5. */
  6. private boolean isViewCreated;
  7. /**
  8. * 数据是否已加载完毕
  9. */
  10. private boolean isLoadDataCompleted;
  11. @Nullable
  12. @Override
  13. public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  14. this.mContentView = inflater.inflate(loadLayoutId(), null);
  15. initViews();
  16. bindListener();
  17. isViewCreated = true;
  18. return mContentView;
  19. }
  20. @Override
  21. public void setUserVisibleHint(boolean isVisibleToUser) {
  22. super.setUserVisibleHint(isVisibleToUser);
  23. if (isVisibleToUser && isViewCreated)//只有在用户可见以及初始化之后才加载数据
  24. lazyLoad();
  25. }
  26. /**
  27. * Framgnet重组时候也会跳过onCreate,而onAttach和onActivityCreated还是会被调用
  28. */
  29. @Override
  30. public void onActivityCreated(@Nullable Bundle savedInstanceState) {
  31. super.onActivityCreated(savedInstanceState);
  32. if (getUserVisibleHint())
  33. lazyLoad();
  34. }
  35. /**
  36. * 懒加载的方法
  37. */
  38. protected void lazyLoad() {
  39. if (!isLoadDataCompleted) {
  40. initData();
  41. processLogic();
  42. isLoadDataCompleted = true;
  43. }
  44. }
  45. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/941070
推荐阅读
相关标签
  

闽ICP备14008679号