Search code examples
kotlinandroid-activitytype-mismatch

Type mismatch: inferred type is NameFragment but Context was expected - Kotlin


I want to make a record audio permission request function when someone presses a button. I've gone through many google searches from 27 errors to only 2 errors.

I've searched many questions, but none of them are a solution of my problem. Here's the Code for 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)
    }
}

First error:

Type mismatch: inferred type is SlideshowFragment but Context was expected

second error: Type mismarch: inferred type is SlideshowFragment but Activity was expected

I really hope, that someone can help me. Thank you all so much for every answer or question.


Solution

  • I don't exactly know what this code does, but I think you are getting the errors here

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

    and here

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

    right?

    If you are calling this code inside your fragment (which you do, because of the error messages), you should change it the following:

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

    and

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