未解决的参考:android MediaPlayer (kotlin) 中的上下文
Posted
技术标签:
【中文标题】未解决的参考:android MediaPlayer (kotlin) 中的上下文【英文标题】:Unresolved reference: Context in android MediaPlayer (kotlin) 【发布时间】:2021-02-18 03:18:32 【问题描述】:我创建这个函数是为了让按钮在点击时发出声音,声音文件是位于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 语句,在这个开发阶段它总是正确的。
【问题讨论】:
【参考方案1】:未解决的参考:上下文
您收到以下错误,因为您使用 Class 而不是变量名作为参数。
fun play_sound(which_one:Int)
if(which_one == 1)
val mediaPlayer:MediaPlayer? = MediaPlayer.create(Context,R.raw.button_click)
mediaPlayer?.start()
android 中也有不同种类的上下文。
您有自己的应用程序、活动和片段上下文,它们也与不同的生命周期相关联,具体取决于您使用的上下文。
如果此函数是您的 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()
【讨论】:
【参考方案2】:将正确的活动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()
【讨论】:
同样的事情 ctx 不起作用它输出相同的错误信息 @Adelgamer 您是否将其作为参数添加到您的方法中? 如果你从Activity
开始这个方法,那么你可以通过this
作为Activity
是一个Context
实例(extends it)以上是关于未解决的参考:android MediaPlayer (kotlin) 中的上下文的主要内容,如果未能解决你的问题,请参考以下文章
`未解决的参考:新的 Flutter 项目上的 android`
未解决的参考:viewModelScope - Kotlin Android
Android中的Firebase:firestore是未解决的参考
未解决的参考匕首 2 + kotlin + android gradle