所以我的目标就像标题所说的是将API
响应结果传递给一个片段一个onSuccess.run()
方法。只是为了提供一些上下文,我开始在Manager类中执行如下方法:
override fun callUser(onSuccess:Runnable, onFailure:Runnable){
NetworkManager.instance.performCall(NetworkManager.REGISTRATION.verifyUser(id),
object : NetworkManager.OnRequestCallback<UserInfoResponse> {
override fun onSuccess(body: UserInfoResponse?) {
body?.data?.let {
onSuccess.run()
}
}
override fun onError(errorBody: String?) {
onFailure.run()
}
})
}
然后我转到一个片段,像上面这样调用上面的方法:
objectManager.callVerifyAdvisor(
Runnable {[On Success stuff },
Runnable {[On Error]}
}
问题是,尽管我可以在片段中决定要在onSuccess()
和onFailure()
方法中执行的操作,但我无法通过执行以下操作来将API Results
赋予该片段这样。
所以我的想法是做类似[我用评论指定要关注的部分]之类的事情:
NetworkManager.instance.performCall(NetworkManager.REGISTRATION.verifyUser(id),
object : NetworkManager.OnRequestCallback<UserInfoResponse> {
override fun onSuccess(body: UserInfoResponse?) {
body?.data?.let {
it.userName // I get this from api response
onSuccess.run()
}
}
override fun onError(errorBody: String?) {
onFailure.run()
}
})
}
然后在我的片段中,我想要这样的东西:
objectManager.callVerifyAdvisor(
Runnable {[On Success stuff }, //receive here the it.userName
Runnable {[On Error]}
}
有人可以给我任何想法吗?旁注->我在标签上放了kotlin,因为它有某种功能。
答案 0 :(得分:2)
您只需要将onSuccess从Runnable
替换为您的自定义功能类型回调:
override fun callUser(onSuccess: (String) -> Unit, onFailure: Runnable) {...
然后将userName传递给回调:
NetworkManager.instance.performCall(NetworkManager.REGISTRATION.verifyUser(id),
object : NetworkManager.OnRequestCallback<UserInfoResponse> {
override fun onSuccess(body: UserInfoResponse?) {
body?.data?.let {
onSuccess.invoke(it.userName) // Pass userName
}
}
override fun onError(errorBody: String?) {
onFailure.run()
}
})
}
然后您可以从此回调中获取用户名:
objectManager.callVerifyAdvisor(
{userName -> } // Here you get your result
Runnable {[On Error]}
}