在Fragment1中虽然介绍了Fragment生命周期会执行到的各个override方法,但没有介绍在动态操作时FragmentTransaction对于fragment生命周期的影响。这篇文章讲介绍这一块内容。
FragmentTransaction的几个核心方法除了replace都是成对出现。
Add/Remove
add 方法把一个fragment添加到一个Fragment管理容器里。当FragmentTransaction使用了add方法并commit后会执行下面几个方法。
onAttach
onCreate
onCreateView
onActivityCreated
onStart
onResume
add方法不存在理解上的问题,调用后对应fragment会一路执行到运行状态位置即onResume。
remove方法会移除Fragment管理窗口中Fragment并销毁(没执行fragmentTransaction.addToBackStack时)。
onPause
onStop
onDestroyView
onDestroy
onDetach
当执行fragmentTransaction.addToBackStack时不会销毁fragment对象也不会和active分离
onPause
onStop
onDestroyView
此时按返回键会返回到对应fragment,此时会调用以下几个方法:
onActivityCreated
onStart
onResume
Replace
Replace方法使用另一个Fragment替换当前的,实际上就是remove()然后add()的合体~
Attach/Detach
Attach方法会将fragment附着到activity中,会执行下面几个方法。
onAttach
onCreate
Detach不能字面理解为把对应fragment和active分离掉,而是销毁了fragment的view。执行以下方法。
onPause
onStop
onDestroyView
当detach前没有执行过fragmentTransaction.addToBackStack方法时,点击返回键会直接销毁对应fragment。若执行过fragmentTransaction.addToBackStack方法,点击返回键回恢复对应fragment
Show/Hide
show 展示add到容器中的fragment的View(不会调用到Fragment的override方法)
hide 隐藏add到容器中的fragment的View(通用不会调用到Fragment的override方法)