未解决的参考:android MediaPlayer (kotlin) 中的上下文

Unresolved reference: Context in android MediaPlayer (kotlin)

我创建这个函数是为了让按钮在我点击时发出声音,声音文件是位于 raw/button_click.mp3 目录中的 mp3。

fun play_sound(which_one:Int) {
    if(which_one == 1){
        val mediaPlayer:MediaPlayer? = MediaPlayer.create(Context,R.raw.button_click)
        mediaPlayer?.start()
}
}

但是当我 运行 它 Unresolved reference: Context

时出现以下错误

我应该如何编辑我的代码来解决这个问题?

顺便说一下,暂时忽略 if 语句,它在这个开发阶段总是为真。

将适当的活动 Context 传递给此方法

fun play_sound(ctx:Context, which_one:Int) {
    if(which_one == 1){
        val mediaPlayer:MediaPlayer? = MediaPlayer.create(ctx, R.raw.button_click)
        mediaPlayer?.start()
    }
}

Unresolved reference: Context

您收到以下错误,因为您使用 Class 而不是变量名作为参数。

fun play_sound(which_one:Int) {
    if(which_one == 1) {
        val mediaPlayer:MediaPlayer? = MediaPlayer.create(Context,R.raw.button_click)
        mediaPlayer?.start()
    }
}

在 Android 中也有不同种类的 Context

您有您的应用程序、Activity 和片段上下文,它们也与不同的生命周期相关,具体取决于您使用的 上下文

如果这个函数是你Activity的成员。

fun play_sound(which_one:Int) {
    if(which_one == 1) {
        val mediaPlayer:MediaPlayer? = MediaPlayer.create(this@YourActivityHere,R.raw.button_click)
        mediaPlayer?.start()
    }
}

片段

fun play_sound(which_one:Int) {
    if(which_one == 1) {
        val mediaPlayer:MediaPlayer? = MediaPlayer.create(requireContext(),R.raw.button_click)
        mediaPlayer?.start()
    }
}