# 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的生命周期方法;