您好我是kotlin的新手,并试图从内部匿名类中调用私有函数。
以下是电话:
object callback : Callback<ResponseBody> {
override fun onResponse(call: Call<ResponseBody>?, response: Response<ResponseBody>?) {
Log.d("jjj", " response is " + response.toString())
displaySuccess()
}
override fun onFailure(call: Call<ResponseBody>?, t: Throwable?) {
}
}
private fun displaySuccess(){
Toast.makeText(activity,"succesful", Toast.LENGTH_LONG)
}
这两段代码都驻留在Fragment类上,而displaySuccess不能在onResponse中访问吗?
答案 0 :(得分:4)
使用object
你正在创建一个单例,它不知道如何访问外面的类。您应该将其定义为类并实例化它。
答案 1 :(得分:2)
你必须声明这样的对象:
val callback = object: Callback<ResponseBody> {
override fun onResponse(call: Call<ResponseBody>?, response: Response<ResponseBody>?) {
//implementation
}
override fun onFailure(call: Call<ResponseBody>?, t: Throwable?) {
//implementation
}
}
您使用的是object declaration。要创建匿名类的对象,您必须使用object expression。他们的语法略有不同。