提问者:小点点

Kotlin:类型不匹配:推断的类型是故意的?但意图是意料之中的


我是Kotlin的新手,在我的OnActivityResult方法中出现了如下错误

‘类型不匹配:推断的类型是意图类型?但意料之中。

 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()
    }

当我使用onactivityresult中的数据时,它会给我一个上面提到的错误:

mediaProjection = projectionManager!!.getMediaProjection(resultCode,data)

共1个答案

匿名用户

在Kotlin中存在可为空的类型,intentintent不是同一类型。数据:意图?意味着您的数据可以是

GetMediaProjection(resultCode:int,data:intent)方法希望数据的类型为intent,这意味着它不能接受null值。因此,您必须使用!!运算符将其强制转换为非NULL值,或者检查它是否为NULL:

if(data != null){
    mediaProjection = projectionManager!!.getMediaProjection(resultCode,data)
}

在这种情况下,它会自动知道数据不是空的,因此不会抛出错误。