Intent 中的 Override OnActivityResult 不起作用 - Kotlin

4

我正在重写OnActivityResult来控制应用程序中的某些流程。

问题在于它会出现错误,指出它没有覆盖任何内容。

这里是我正在使用的代码:

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
}

只有在我在 Intent 后添加非空保护之后,错误才消失,代码应该像这样:
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
}

但是这会导致函数本身出现kotlin.KotlinNullPointerException错误。


不要忘记 super.onActivity...覆盖 fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) } - Moises Portillo
数据:Intent?是正确的方法签名。因此,您必须使用"data: Intent?"。能否请您分享更多来自onActivityResult的代码。然后,我们可以查看NullPointerException。 - guipivoto
1个回答

8

onActivityResult 方法的签名为:

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data)

正如你所看到的,Intent data是可为空的。因此,为了正确地覆盖该方法,必须使用:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)

由于数据可为空,您必须在每次需要检查意图时使用安全调用运算符?

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    val action = data?.action
    ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接