android fragment生命周期图,Android Fragment 生命周期

问题由来

最近开始尝试使用Kotlin,体验如下

b5ea7514c48f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

这种直接调用控件id进行的操作,发现在Fragment中并不可以,会报错:

Caused by: java.lang.IllegalStateException: xxx must not be null

不能直接使用控件id的原因是,xml文件还没有载入。这就类似于在Activity中要在setContentView之后再使用findViewById。

解决方法

重写了Fragment的onViewCreated方法,在这个方法内部对控件进行操作。但是在Fragment的官方文档中却没有出现过这个方法,所以自己来捋一下Fragment的声明周期。

Fragment的生命周期

先放两张经典的图

Fragment的生命周期:

b5ea7514c48f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

Fragment 生命周期

Activity和Fragment生命周期对比:

b5ea7514c48f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

观察生命周期

重写了图中所有方法以及onViewCreated方法,在方法内打印方法名

切换到该Fragment

2018-12-11 15:58:00.750 1683-1683/com.rimson.hellojetpack D/SecondFragment:: onAttach

2018-12-11 15:58:00.750 1683-1683/com.rimson.hellojetpack D/SecondFragment:: onCreate

2018-12-11 15:58:00.750 1683-1683/com.rimson.hellojetpack D/SecondFragment:: onCreateView

2018-12-11 15:58:00.756 1683-1683/com.rimson.hellojetpack D/SecondFragment:: onViewCreated

2018-12-11 15:58:00.757 1683-1683/com.rimson.hellojetpack D/SecondFragment:: onActivityCreated

2018-12-11 15:58:00.757 1683-1683/com.rimson.hellojetpack D/SecondFragment:: onStart

2018-12-11 15:58:00.758 1683-1683/com.rimson.hellojetpack D/SecondFragment:: onResume

返回

声明:此处用的是Jetpack的Navigation,直接按返回键返回至nav_host_fragment

所以这个返回可以看做是销毁该Fragment

2018-12-11 16:19:45.527 1683-1683/com.rimson.hellojetpack D/SecondFragment:: onPause

2018-12-11 16:19:45.528 1683-1683/com.rimson.hellojetpack D/SecondFragment:: onStop

2018-12-11 16:19:45.528 1683-1683/com.rimson.hellojetpack D/SecondFragment:: onDestroyView

2018-12-11 16:19:46.006 1683-1683/com.rimson.hellojetpack D/SecondFragment:: onDestroy

2018-12-11 16:19:46.007 1683-1683/com.rimson.hellojetpack D/SecondFragment:: onDetach

熄屏(回到桌面)

2018-12-11 16:21:31.700 1683-1683/com.rimson.hellojetpack D/SecondFragment:: onPause

2018-12-11 16:21:31.738 1683-1683/com.rimson.hellojetpack D/SecondFragment:: onStop

解锁(返回应用)

2018-12-11 16:21:34.390 1683-1683/com.rimson.hellojetpack D/SecondFragment:: onStart

2018-12-11 16:21:34.406 1683-1683/com.rimson.hellojetpack D/SecondFragment:: onResume

总结

Fragment的生命周期比Activity多了一些,但总体对接的上。

onViewCreated在onCreateView之后调用,所以控件操作可以在这个方法内进行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值