我是 Kotlin 新手,我的 onActivityResult
方法中出现这样的错误
'类型不匹配:推断类型是 Intent?但 Intent 是预期的'
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode != REQUEST_CODE)
{
return
}
if (resultCode != Activity.RESULT_OK)
{
Toast.makeText(this,"Screen cast permission denied",Toast.LENGTH_LONG).show()
return
}
mediaProjectionCallBack = MediaProjectionCallback()
mediaProjection = projectionManager!!.getMediaProjection(resultCode,data)
mediaProjection!!.registerCallback(mediaProjectionCallBack,null)
virtualDisplay = createVirtualDisplay()
mediaRecorder!!.start()
}
当我使用 onActivity
结果中的数据时,这一行出现错误,它给了我上面提到的错误:
mediaProjection = projectionManager!!.getMediaProjection(resultCode,data)
最佳答案
在 Kotlin 中存在可为 null 的类型,Intent?
和 Intent
不是同一类型。
data:Intent?
表示您的 data
可以为 null
。
getMediaProjection(resultCode:Int, data:Intent)
方法希望您的数据为 Intent
类型,这意味着它不能接受 null
值(value)观。因此,您必须使用 !!
运算符将其转换为非空值,或者检查它是否不为空:
if(data != null){
mediaProjection = projectionManager!!.getMediaProjection(resultCode,data)
}
在这种情况下,自动知道数据不为空,因此不会抛出错误。
关于android - Kotlin : Type mismatch: inferred type is Intent? 但 Intent 是预期的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64066159/