Fragment生命周期到项目开发使用Fragment的抽取

本文详细解析了Fragment的四个生命周期阶段:创建、Start、Paused和销毁。并提供了一个简化生命周期管理的BaseFragment类,帮助开发者更好地理解和应用Fragment。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
 从官网中扣的图上可以看到Fragment的生命周期可以分成4段
1 创建阶段:onAttach(),onCreate(),onCreateView(),onActivityView();
            此4个方法为创建阶段的方法,
           Attach()可以获取到宿主的Activity对象,并可以给Fragment设置数据,
           onCreate()这个是Fragment创建的方法,基本上不能做数据的操作。
            onCreateView中用于view的绑定,这个时候可以做一些子控件获取的操作。
           onActivityCreated()方法后才可以进行数据的操作。一般数据和事件的操作我都在此方法中执行。
2  Start阶段:onStart(),onResume();
            为什么将这2个方法归为一类呢,因为基本上onStart()执行以后基本上onResume()也会执行,之前Activity中的onRestart()也可以理解为Fragment中onStart()。
3 Paused阶段:onPause(),onStop()。
            这个阶段和Activity中的完全一样,一般为当前Fragment退出前天的时候执行此阶段,如果继续返回到前台直接调用start阶段中的2个方法。
4 销毁阶段:onDestroyView(),onDestroy(),onDetach()。
            onDestroyView(),是Fragment中的ui与Fragment分离(通过inflate进来的ui),
            onDestroy(),Fragment不再使用的时候调用,但是Activity中仍然可以找到当前的Fragment
            onDetach(),当Fragment被回收的时候调用此方法。

在弄清楚Fragment生命周期后直接抽取项目开发中的baseFragment,用于简化生命周期
  1. /**
  2. * Fragment基类常规抽取:处理了Fragment的生命周期,子类在使用的时候不需要考虑生命周期
  3. *
  4. * @author YeShunDa
  5. * @date 2016/11/2
  6. */
  7. public abstract class BaseFragment extends Fragment {
  8. /**
  9. * 获取Fragment绑定的布局文件:此方法必须要复写
  10. *
  11. * @return 获取到当前Fragment对应的布局文件
  12. */
  13. protected abstract int getResourcesLayoutId();
  14. @Nullable
  15. @Override
  16. public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  17. int resourcesLayoutId = getResourcesLayoutId();
  18. if (resourcesLayoutId == 0) {
  19. throw new RuntimeException("布局文件不能为空");
  20. }
  21. View view = inflater.inflate(resourcesLayoutId, null);
  22. initView(view);
  23. return view;
  24. }
  25. @Override
  26. public void onActivityCreated(@Nullable Bundle savedInstanceState) {
  27. super.onActivityCreated(savedInstanceState);
  28. initData();
  29. setViewData();
  30. initEvent();
  31. }
  32. /**
  33. * 初始化view:用于获取到当前布局中的控件
  34. *
  35. * @param view Fragment中的view对象
  36. */
  37. protected void initView(View view) {
  38. }
  39. /**
  40. * 给控件设置数据:子类可以选择性复写
  41. */
  42. private void setViewData() {
  43. }
  44. /**
  45. * 初始化事件:子类可以选择性复写
  46. */
  47. private void initEvent() {
  48. }
  49. /**
  50. * 初始化数据:子类可以选择性复写
  51. */
  52. private void initData() {
  53. }
  54. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值