【问题标题】:Override OnActivityResult inside Intent is not working - kotlin在 Intent 中覆盖 OnActivityResult 不起作用 - kotlin
【发布时间】:2020-02-14 19:16:05
【问题描述】:

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

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

这是我正在使用的代码:

    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) }
  • 数据:意图?是正确的方法签名。所以,你必须使用“数据:意图?”。您能否分享更多来自您的 onActivityResult 的代码。那么,我们可以看看 NullPointerException

标签: android kotlin onactivityresult


【解决方案1】:

方法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
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-02
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 2014-04-03
    相关资源
    最近更新 更多