- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在设置我的 fragment ,如 suggested in Google docs像这样:
private var _binding: MyBinding? = null
private val binding get() = _binding!!
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
_binding = MyBinding.inflate(inflater, container, false)
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
现在我正在调用一个协程,据我所知,它应该被限制在这个 fragment 的生命周期内。它有一个更长的网络调用,然后成功:
lifecycleScope.launch(Dispatchers.Main) {
when (myViewModel.loadFromNetwork(url)) {
true -> responseSuccess()
false -> responseFailure()
}
}
private suspend fun responseSuccess() {
binding.stateSuccess.visibility = View.VISIBLE
// ...
}
现在,当我按下 Android 系统返回按钮时,
loadFromNetwork
仍在加载 fragment 被破坏和
onDestroyView()
叫做。因此
binding
现在是
null
.我收到了
kotlin.KotlinNullPointerException
.我不太明白为什么
responseSuccess()
即使我认为
lifecycleScope
仍在执行中专门针对这种情况。根据
Google Docs :
A LifecycleScope is defined for each Lifecycle object. Any coroutine launched in this scope is canceled when the Lifecycle is destroyed.
最佳答案
协程取消是 cooperative .这意味着检查取消是协程本身的责任。协程库中的大多数(或可能是全部)挂起操作会检查是否取消,但如果您不调用其中任何一个,则需要按照 here 所述使代码可取消.
在协程中使用 View 的更好选择是使用 lifecycle extensions当生命周期状态不处于所需状态时,它会自动暂停/取消协程。
另请注意,取消只是常规 CancellationException
,所以请检查您是否会意外捕获它。
关于android - Fragment 中的 View 绑定(bind)导致 KotlinNullPointerException 在生命周期范围的协程内运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64313911/
我从 Firebase 请求一个对象,但在请求它之前,我检查是否有 Activity 的互联网连接以获得结果,我以这种方式调用我的 repo View 模型 class ArtistsViewMode
数据从Sql服务器获取并获取数据json。这个json数据解析retofit2。 创建了登录 Activity ,但给出错误 MainActivity.kt class MainActivity :
考虑以下代码: 示例 fun main(args: Array) { maybeWriteMessage() } fun maybeWriteMessage(message: String?
这是我第一次构建 Android 应用程序。但是,当我在我的虚拟设备上运行该应用程序时,它停止工作并不断崩溃。该错误说明了一些关于空指针异常的信息。这是我第一次使用 Kotlin,我用 Java 编写
我一开始用的是Java。今天我将我的 Java 代码转换为 Kotlin 代码并且发生了错误。当我提交表单时,Thymeleaf 显示 Invalid property 'details[0]' of
我正在尝试在 kotlin/android 中创建房间数据库,但是当我尝试从数据库中获取 LiveData 时,我得到了 KotlinNullPointerException。我有两个表 Car 和
在初始化我的 uid 时打开初始 fragment 时获取 KotlinNullPointerException: fun setInitialData() { firebaseUse
请记住,我正在逐步进行函数式编程,呵呵。 我定义了这样一个可变列表: var list: MutableList? = null 因此,当我尝试使用list!!.add(E())时会抛出一个 kot
由于 Kotlin 不允许隐式空值/变量,是 KotlinNullPointerException引入以明确表示 NPE由 !! 引起?这就是NullPointerException这个子类的唯一目的
我正在尝试操作片段xml中的元素,但是我所做的所有尝试都导致了一些错误。当我使用root !!。qr_code.visibility = View.INVISIBLE时,我得到了: 我的元素引用有什么
我正在设置我的 fragment ,如 suggested in Google docs像这样: private var _binding: MyBinding? = null pri
我是 Jenkins 的新手,正在尝试生成 APK。我收到以下错误: 我添加了 git 凭据和 gradle 脚本如下: 注意:我有一个名为“Dev”的构建类型 最佳答案 我在为 android 项目
令人惊讶的是,我的项目完全是用 Java 编写和开发的,它也不包含为 Kotlin 声明的任何依赖项。然而我收到了这个奇怪的错误: A problem occurred configuring pro
我是一名优秀的程序员,十分优秀!