# Fragment
# Fragment的生命周期

具体方法介绍:
onAttach():完成Fragment与Activity的绑定,参数中的Activity即为要绑定的Activity,可以进行赋值等操作;onCreate():完成Fragment的初始化;onCreateView():加载View布局,绑定布局文件;onActivityCreated():与Fragment绑定的Activity已经执行完成了onCreate(),可以与Activity进行交互操作;onStart():Fragment变为可见状态;onResume():Fragment变为可交互状态;onPause():Fragment变为不可交互状态(不代表是不可见);onSaveInstanceState():保存当前Fragment的状态,记录一些数据;onStop():Fragment变为不可见状态;onDestroyView():销毁Fragment的有关视图,但并未和Activity解绑,还可以通过onCreateView()重新创建视图;onDestroy():销毁Fragment时调用;onDetach():解除和Activity的绑定,是Fragment销毁的最后一步。
添加Fragment可以分为静态添加和动态添加*两类。静态添加是指在XML中直接Fragment,缺点是添加之后不能删除。一般推荐是在代码中FragmentManager中使用一系列的FragmentTransaction事务操作动态控制。
add()remove()show()hide()replace()replace()+addToBackStack()detach()
# Activity与Fragment的异同
- 相同点:Activity与Fragment都可以包含布局,都有自己的生命周期;
- 不同点:因为Fragment是依附在Activity上的,多了一些和宿主Activity相关的生命周期方法,例如
onAttch()、onActivityCreated()、onDetach()等;Fragment的生命周期方法都是由宿主Activity而不是由操作系统调用的,Activity中的生命周期方法都是是protected,而Fragment的生命周期方法都是public,因为Activity需要调用Fragment这些方法并管理它。
# Activity和Fragment的关系
- Fragment的出现是为了解决Android碎片化,可以作为Activity界面的组成部分,可以在Activity运行中实现动态地加入、移除和交换;
- 一个Activity可以同时出现多个Fragment,而一个Fragment也可以在多个Activity中使用;
- Activity中的
FragmentManager负责调用队列中Fragment的生命周期方法;