【发布时间】:2022-12-15 18:20:31
【问题描述】:
由于片段的某些生命周期问题,应用程序开始出现一些崩溃(无法 100% 重现)。
我正在使用视图绑定,并且我正在根据 Android 的建议手动使绑定无效,以避免在出现以下情况时占用大量内存
private var _binding: FragmentCustomBinding? = null
private val binding get() = _binding!!
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View = FragmentCustomBinding.inflate(inflater, container, false).also {
_binding = it
}.root
override fun onDestroyView() {
_binding = null
super.onDestroyView()
}
override fun onSaveInstanceState(outState: Bundle) {
outState.apply {
putString(BUNDLE_KEY_SOME_VALUE, binding.etSomeValue.text.toString())
}
super.onSaveInstanceState(outState)
}
我在 onSaveInstanceState() 中得到一个 NullPointerException,因为 binding 是 null,因为这是在 onDestroyView() 之后调用的。
知道如何在不手动创建保存状态并手动处理它的情况下解决这个问题吗?
【问题讨论】:
标签: android nullpointerexception fragment android-lifecycle android-savedstate