如何定义实现Kotlin接口的变量?



我希望定义一个变量mAction来实现接口MediaRecorder.OnInfoListener

但是代码A是不正确的,我怎么修复它?

代码

val mAction: MediaRecorder.OnInfoListener{
mr, what, extra ->
if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) {
//ToDo
}
}

添加内容:

代码B

val mAction = object: MediaRecorder.OnInfoListener{
override fun onInfo(mr: MediaRecorder?, what: Int, extra: Int) {
if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) {

}
}
}

您只是缺少了一个=而不是:

val mAction = MediaRecorder.OnInfoListener{
mr, what, extra ->
if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) {
//ToDo
}
}

你不能在没有=的情况下定义属性,除非你在定义自定义getter或使用属性委托。

val mAction = MediaRecorder.OnInfoListener{
mr, what, extra ->
if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) {
//ToDo
}
}

你可以这样做

最新更新