Fragment 2

来源:互联网 发布:淘宝 买飞机 编辑:程序博客网 时间:2024/06/02 14:49

在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方法)

原创粉丝点击