Reputation: 161
I am new to Kotlin and I have an error like this in my onActivityResult
method
'Type mismatch: inferred type is Intent? but Intent was expected'
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()
}
Error is in this line when I use data from onActivity
result it gives me an error which I mentioned above:
mediaProjection = projectionManager!!.getMediaProjection(resultCode,data)
Upvotes: 4
Views: 4967
Reputation: 2214
In Kotlin there are nullable types, Intent?
and Intent
aren't the same type.
data:Intent?
means that your data
can be null
.
getMediaProjection(resultCode:Int, data:Intent)
method wants your data to be of type Intent
which means it can't accept null
values. So you have to either cast it to not-null value with !!
operator or check if it is not null:
if(data != null){
mediaProjection = projectionManager!!.getMediaProjection(resultCode,data)
}
In this case automatically knows that data is not null, so it doesn't throw error.
Upvotes: 4