在 Intent 中覆盖 OnActivityResult 不起作用 - kotlin

Ahm*_*gdi 3 android kotlin onactivityresult

我正在覆盖我的 OnActivityResult 以控制应用程序中的某些流程。

它给出的错误是它的问题overriding nothing

这是我使用的代码:

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
}
Run Code Online (Sandbox Code Playgroud)

只有当我在 Intent 之后添加非空保护时,错误才会消失,代码如下:

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
}
Run Code Online (Sandbox Code Playgroud)

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

W0r*_*0le 8

方法的签名onActivityResult是:

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data)
Run Code Online (Sandbox Code Playgroud)

如您所见,可以Intent data为空。因此,为了正确覆盖该方法,您必须使用:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)
Run Code Online (Sandbox Code Playgroud)

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

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    val action = data?.action
    ...
}
Run Code Online (Sandbox Code Playgroud)