第一行代码第三版第5章有关Fragment 生命周期中onActivityCreated() 被废弃的问题
·
原文


从 Android API 级别 28(Android 9.0) 开始,onActivityCreated() 被标记为 deprecated。Google 给出的理由是:这个方法的职责和 onViewCreated()、onCreate() 重叠,语义不清晰。同时,现代 Android 开发中使用 ViewModel + LiveData + ViewBinding 已经不再需要它。换句话说:
原本放在 onActivityCreated() 的UI逻辑可以放在 onViewCreated();非UI的初始化逻辑可以放在 onCreate()。
替代方案
- 使用 onViewCreated() 初始化视图逻辑如果你原先在 onActivityCreated() 中操作视图、设置监听器或加载数据,现在应该放在 onViewCreated():
class ExampleFragment : Fragment(R.layout.fragment_example) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// 初始化UI
val button = view.findViewById<Button>(R.id.button)
button.setOnClickListener {
// 点击事件逻辑
}
}
}
- 使用 onCreate() 做非UI初始化,如果是初始化 ViewModel、网络请求管理器等非UI组件,则推荐写在 onCreate():
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = ViewModelProvider(this).get(ExampleViewModel::class.java)
}
更多推荐


所有评论(0)