Android Fragment的FragmentTransaction 操作和对应的生命周期变化

1. Fragment的生命周期和Activity的生命周期

Fragment是依附于Activity而存在的,当Activity在onCreate时,Fragment会进行onAttach, onCreate, onCreateView, onActivityCreated;当Activity进行onStart时,Fragment会进行onStart;而当Activity进行onResume时,Fragment也会onResume;当Activity进行onStop时,Fragment也会进行onStop;当Activity进行onDestroy时,Fragment也会进行onDestroryView,onDestroy,onDetach。

现在我们有三个Fragment:f1, f2, f3,有一个Activity:a

在FragmentTransaction中我们知道主要用到的方法有,add, replace, remove, hide, show, attach, detach, 还有一个比较关键的addToStack。

我将对这些方法做实验,来探究Fragment的生命周期:

Step1: 打开a 

显示:a.onCreate, a.onStart, a.onResume

Step2: 点击按钮,将f1进行add到a中

显示:f1.onAttach, ..., f1. onResume

Step3:用f2去replacef1

显示:f1.onPause,...,f1.onDetach; f2.onStart, ..., f2.onResume

说明:replace是remove+add,所以f1生命周期结束

Step4: 用f3去replacef2,addToStack

显示:f2.onPause,...f2.onDestroyView, f3.onAttach, ..., f3.onResume

说明:replace中的remove由于addToStack存在,而并没有将f2完全结束,而是只是结束了视图,任然可以使用FragmentManager操作。addToStack是用于添加回退栈,用于返回,如果不天剑addToStack,点击回退键,则完全退出这个Acticity。

Step5:回退键

显示:f3.onPause,...f3.onDetach; f2.onCreateView, ..., f2.onResume

Step6:回退键

说明:此时退出了Acticity


第二次操作:

Step1: 打开a 

显示:a.onCreate, a.onStart, a.onResume

Step2: 点击按钮,将f1进行add到a中

显示:f1.onAttach, ..., f1. onResume

Step3:点击按钮,将f1进行detach

显示:f1.onPause, ..., f1.onDestroyView

说明:和addToStack时候使用remove一样,都是仅仅删除视图。(注意:这里的detach和onDetach没有直接关系,不要混淆)

Step4:点击按钮,将f1进行attach

显示:f1.onCreateView, ..., f1.onResume

Step5:将f2进行add

显示:f2.onAttach, ..., f2.onResume

说明:可见一个FragmentLayout可以存储多个Fragment,只不过不能同时显示多个而已。这时显示的是后添加的f2

Step6: f1进行show

说明:f1显示出来

Step7:f1进行hide

说明:f1又消失了,f2显示。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值