Kotlin:类型不匹配:推断类型是 Intent?但意图是预期的
Posted
技术标签:
【中文标题】Kotlin:类型不匹配:推断类型是 Intent?但意图是预期的【英文标题】:Kotlin : Type mismatch: inferred type is Intent? but Intent was expected 【发布时间】:2021-01-11 21:50:19 【问题描述】:我是 Kotlin 的新手,在我的 onActivityResult
方法中出现这样的错误
'类型不匹配:推断的类型是 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)
【问题讨论】:
【参考方案1】:在 Kotlin 中有可以为空的类型,Intent?
和 Intent
不是同一个类型。
data:Intent?
表示你的data
可以是null
。
getMediaProjection(resultCode:Int, data:Intent)
方法希望您的数据为 Intent
类型,这意味着它不能接受 null
值。因此,您必须使用 !!
运算符将其转换为非空值,或者检查它是否不为空:
if(data != null)
mediaProjection = projectionManager!!.getMediaProjection(resultCode,data)
在这种情况下自动知道数据不为空,所以它不会抛出错误。
【讨论】:
任何一种解决方案它仍然给我一个错误1.java.lang.RuntimeException: Failure delivering result ResultInfowho=null, request=1000, result=-1, data=Intent (has extras) to activity no.realitylab.arface/no.realitylab.arface.FaceRegionsActivity: java.lang.SecurityException: Media projections
2.Caused by: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
@Tuqay
是的,在同一行@Tuqay
你得到的这个错误和上一个不一样,很抱歉我帮不了你,我建议发布这个新错误的问题。祝你有美好的一天以上是关于Kotlin:类型不匹配:推断类型是 Intent?但意图是预期的的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin - 类型不匹配:推断类型是 Any?但布尔值是预期的
类型不匹配:推断的类型是 String 但在 kotlin 中需要 Charset
kotlin gradle dsl问题:类型不匹配:推断类型是字符串但URI!预计
Android Kotlin - viewBinding 类型不匹配:推断类型为 DrawerLayout 但应为 ConstraintLayout