val res = Response.Listener<String> {
fun onResponse(s: String) {
doOnSuccess(s)
}
}
在正确执行Toast的情况下,程序中永远不会使用功能onResponse
(无法从检查范围访问)。
答案 0 :(得分:2)
正如@mTak所说,您错过了override
修饰符。
这是更正的代码:
val res = Response.Listener<String> {
override fun onResponse(s: String) {
doOnSuccess(s)
}
}
答案 1 :(得分:1)
val res = Response.Listener<String> {
doOnSuccess(it)
}
或者
val res = object : Response.Listener<String> {
override fun onResponse(s: String) {
doOnSuccess(s)
}
}
对于您的代码,Kotlin将其视为第一种形式,除了方法的主体只是声明一个巧合地称为onResponse
的函数而没有执行其他操作;与
Response.Listener<String> {}
答案 2 :(得分:0)
问题
问题是您在lambda中定义了一个永远不会调用的匿名函数onResponse
!
解决方案:
val res = Response.Listener<String> {
fun onResponse(s: String) {
doOnSuccess(s)
}
onResponse(it) // invocation
}
更好的解决方案:
由于您的doOnSuccess
似乎接受String
作为单个参数,并且它返回Unit
,因此也可以使用函数引用。
val res = Response.Listener<String>(::doOnSuccess)
我没有测试它,但是在这种情况下,我认为您甚至可以省略显式类型,因为Kotlin可以从函数引用中推断出它。
val res = Response.Listener(::doOnSuccess)