Fragment的概念及生命周期

一、Fragment的概念和用法:
(一)、概念:
        Fragment是在Android 3.0 (API level 11)开始引入新的API技术。
        为了提高代码重用性和改善用户体验,我们将Activity中的UI组件进行分组和模块化管理。这些分组后的UI组件就是Fragment。
        一个Activity页面中可以包含多个Fragment模块,而同一个Fragment模块也可以被多个Activity使用。每个Fragment有自己的布局,有自己的生命周期。虽然Fragment拥有自己的生命周期,但因为Fragment必须被嵌入到Activity中使用,因此Fragment的生命周期是受其Activity宿主的生命周期所控制的。当Activity暂停时,该Activtiy内的所有Fragment都会暂停;当Activity被销毁时,该Activity内的所有Fragment都会被销毁。


(二)、Fragment为什么能改善用户体验,另外Fragment能用于平板电脑,那么普通的手机屏幕适用吗?

下图是一个“AndroidManual学习手册浏览界面”的效果图:

      
  如上图所示,“平板电脑”中,在一个Activity布局中放了两个Fragment:左侧是文章标题列表Fragment,右侧是文章内容展示的Fragment。左侧的标题列表不变,点击每条列表项,右侧的文章内容发生变化。点击和浏览内容都在同一个页面中发生,避免了页面切换和点击“返回键”返回的操作。用户感觉自然方便和快捷。
        那么Fragment组件适用于普通屏幕的手机吗?答案是肯定的。Fragment本身是可复用的组件。是否在一个Activity页面中放置多个Fragment取决了屏幕的大小,如果屏幕大小不够,那么就可以在Activity A中只包含Fragment A,在Activity B中只包含Fragment B,点击A中的item跳转到B就可以。


(三)、Fragment要点:【 重点
    1、Fragment作为Activity界面的一部分组成出现;
    2、可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity中使用;
    3、在Activity运行过程中,可以 添加移除或者 替换Fragment( add()、 remove()、 replace());
    4、Fragment可以响应自己的输入事件,并且有自己的生命周期,当然,它们的生命周期直接受其所属的宿主Activity的生命周期控制。


二、Fragment生命周期:

(一)、Fragment基本状态:

    1、活动状态:Resumed   当前Fragment位于前台,用户可见,可以获得焦点;
    2、暂停状态:  Paused   另一个Activity处于前台并拥有焦点, 但是该Fragment所在的Activity仍然可见(前台Activity局部透明或者没有覆盖整个屏幕),不过不能获得焦点;
    3、停止状态:Stopped
  • 要么是宿主Activity已经被停止, 要么是Fragment从Activity被移除但被添加到回退栈中;
  • 停止状态的Fragment仍然活着(所有状态和成员信息被系统保持着)。 然而, 它对用户不再可见, 并且如果Activity被销毁,它也会被销毁;
    4、销毁状态:Destroyed  只能等待被回收。

(二)、Fragment生命周期:【重点



1、onAttach(): 当该Fragment被添加到Activity时被回调。该方法只会被调用一次;

2、onCreate():  当创建Fragment时被回调。该方法只会被调用一次;

3、onCreateView():每次创建、绘制该Fragment的View组件时回调该方法,Fragment将会显示该方法返回的View 组件;

4、onActivityCreated(): 当Fragment的宿主Activity被启动完成后回调该方法;

5、onStart(): 启动Fragment时被回调;

6、onResume():  onStart()方法后一定会回调onResume()方法;

7、onPause(): 暂停Fragment时被回调;

8、onStop(): 停止Fragment时被回调;

9、onDestroyView():  销毁该Fragment所包含的View组件时调用;

10、onDestroy():  销毁Fragment时被回调。该方法只会被调用一次;

11、onDetach():  将Fragment从Activity中删除、替换完成时调用该方法。onDestroy()方法后一定会回调onDetach()方法。
该方法只会被调用一次。

12、onInflate():  

13、onViewCreated():

FragmentManager与Fragment事务:  【重要】
(一)、概念:
        Activity管理Fragment主要依靠FragmentManager。FragmentManager可以完成以下几方面的功能:
  1. 使用findFragmentById()或findFragmentByTag()方法来获取指定Fragment;
  2. 调用popBackStack()方法将Fragment从回退栈中弹出(如同用户按下“返回键”的效果);
  3. 调用addOnBackStackChangeListener()注册一个监听器,用于监听回退栈的变化情况。
        在Activity中使用Fragment,一个很明显的特性是:根据用户的交互情况,可以对Fragment进行添加、移除、替换,以及执行其他动作,提交给Activity的每一套变化被称为一个事务。Fragment事务代表了Activity对Fragment执行的多个改变操作。实现事务借助于FragmentTransaction对象。我们可以保存每一个事务到一个Activity管理的backstack,这样用户就能由Fragment的变化往回导航。



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

志尊宝

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值