我的工作中没有项目,他们要求我给我一个通行证,但是在通过整个项目后,此刻有一部分代码错误给了我。显然,这是我第一次来科特林,我不知道,但是我确实有一个想法。我试图解决它,但没有成功。所以我在寻求帮助。我在
的开头出现了错误= SpeechService.Lintener {
代码在这里
private val mSpeechServiceListener = SpeechService.Listener { text: String?, isFinal: Boolean ->
if (isFinal) {
mVoiceRecorder!!.dismiss()
}
if (mText != null && !TextUtils.isEmpty(text)) {
runOnUiThread {
if (isFinal) {
if (mText!!.text.toString().equals("hola", ignoreCase = true) || b == true) {
if (b == true) {
mText!!.text = null
mTextMod!!.text = text
repro().onPostExecute(text)
random = 2
} else {
b = true
mText!!.text = null
val saludo = "Bienvenido, ¿que desea?"
mTextMod!!.text = saludo
repro().onPostExecute(saludo)
}
}
} else {
mText!!.text = text
}
}
}
}
这里是界面
interface Listener {
fun onSpeechRecognized(text: String?, isFinal: Boolean)
}
请帮帮我。错误是“接口侦听器没有构造函数”
答案 0 :(得分:2)
仅当使用Java编写接口时,才可以使用SAM接口的SpeechService.Listener { }
语法(请参见https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions)。因为该接口是用Kotlin编写的,所以您必须这样编写:
private val mSpeechServiceListener = object : SpeechService.Listener {
override fun onSpeechRecognized(text: String?, isFinal: Boolean) {
// Code here
}
}
在Kotlin中,您实际上并不需要SpeechService.Listener
接口。您可以只使用lambda函数。这取决于接口是来自库还是您自己编写的。
private val mSpeechServiceListener: (String?, Boolean) -> Unit = { text, isFinal ->
// Code here
}