gpt4 book ai didi

android - 为什么在生命周期范围内 fragment 的上下文为空

转载 作者:行者123 更新时间:2023-12-02 18:30:43 25 4
gpt4 key购买 nike

我在 fragment 内使用生命周期作用域时遇到麻烦,我认为如果 fragment 分离到 Activity ,那么生命周期作用域将取消协程作业。

我已经阅读了生命周期范围的代码,我认为这不可能发生。我唯一能做的就是添加一个前提条件“isAdded”来解决这个问题。

private fun updateUserInfo(user: User) = lifecycleScope.launch {
textView.text = getString(R.string.foo)
}

此代码抛出

java.lang.IllegalStateException androidx.fragment.app.Fragment.requireContext (Fragment.java:696)

我希望有人能帮我解释一下lifecycleScope的机制。

最佳答案

Fragment的lifecycleScope(与生命周期本身相同)并不总是有上下文,上下文仅在onAttach之后和onDetach之前可用,如果保留Fragment在onDetach之后还活着,则上下文可以为空。

因为你不仅访问上下文,还触摸 View ,所以你应该使用viewLifecycleOwner.lifecycleScope,这将允许你在Fragment的View生命周期中启动协程,所以你总是有上下文并且它取消onDestroyView

关于android - 为什么在生命周期范围内 fragment 的上下文为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56415530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com