首页 > 解决方案 > 类型不匹配:推断类型为 NameFragment 但预期为 Context - Kotlin

问题描述

当有人按下按钮时,我想制作录制音频权限请求功能。我经历了许多谷歌搜索,从 27 个错误到只有 2 个错误。

我搜索了很多问题,但没有一个是我的问题的解决方案。这是fragment_edward.kt的代码:

    ActivityCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED

private fun requestRecordAudioPermission(){
    var permissionsToRequest = mutableListOf<String>()
    if(!hasRecordAudioPermission())
        permissionsToRequest.add(Manifest.permission.RECORD_AUDIO)


    if(permissionsToRequest.isNotEmpty()){
        ActivityCompat.requestPermissions(this, permissionsToRequest.toTypedArray(),0)
    }
}

第一个错误:

Type mismatch: inferred type is SlideshowFragment but Context was expected

第二个错误: Type mismarch: inferred type is SlideshowFragment but Activity was expected

我真的希望,有人可以帮助我。非常感谢大家的每一个回答或问题。

标签: kotlinandroid-activitytype-mismatch

解决方案


我不完全知道这段代码的作用,但我认为您在这里遇到了错误

ActivityCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED

和这里

ActivityCompat.requestPermissions(this, permissionsToRequest.toTypedArray(),0)

正确的?

如果您在片段中调用此代码(您这样做,因为错误消息),您应该将其更改如下:

ActivityCompat.checkSelfPermission(requireContext(), Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED

ActivityCompat.requestPermissions(requireActivity(), permissionsToRequest.toTypedArray(),0)

推荐阅读