Android Fragment生命周期

status
category
date
summary
slug
icon
tags
password

问题由来

最近开始尝试使用Kotlin,体验如下
notion image
这种直接调用控件id进行的操作,发现在Fragment中并不可以,会报错:
Caused by: java.lang.IllegalStateException: xxx must not be null
不能直接使用控件id的原因是,xml文件还没有载入。这就类似于在Activity中要在setContentView之后再使用findViewById。

解决方法

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

Fragment的生命周期

先放两张经典的图

Fragment的生命周期:
notion image
Activity和Fragment生命周期对比:
notion image

熄屏(回到桌面)

解锁(返回应用)

总结

  • Fragment的生命周期比Activity多了一些,但总体对接的上。
  • onViewCreated在onCreateView之后调用,所以控件操作可以在这个方法内进行。
Loading...

© 刘口子 2018-2025