【发布时间】:2014-07-01 12:11:59
【问题描述】:
我有一个改造接口,它定义了一个带有回调的方法,比如这个:
public interface ApiManagerService {
@GET("/users/")
void getUsers(Callback<List<GitHubMember>>);
}
GitHubMember 只是一个具有 3 个字段的 POJO:id、login 和 url。我创建了一个名为 ResponseHandler 的类,我可以在其中包装来自回调的响应。这里是如何定义的:
public class ResponseHandler<T> {
private T response;
private RESPONSE_CODE responseCode;
private String detail;
public static enum RESPONSE_CODE {
OK, // if request suceed
APP_ERROR, //technical error for instance network
TECHNICAL_ERROR // app technical error
}
//getters and setters
这是我如何通过 getUsers 方法使用这个类:
public ResponseHandler<List<GitHubMember>> getUsers() {
ResponseHandler<List<GitHubMember>> handler = new ResponseHandler<List<GitHubMember>>();
apiManagerService.getUsers(new Callback<List<GitHubMember>> cb) {
@Override
public void success(List<GitHubMember> users, Response response) {
responseHandler.setResponse(users);
responseHandler.setResponseCode(ResponseHandler.RESPONSE_CODE.OK);
}
@Override
public void failure(RetrofitError error) {
try {
handler.setResponseCode(ResponseHandler.RESPONSE_CODE.APP_ERROR);
responseHandler.setDetail(error.toString());
}catch (Exception e){
handler.setResponseCode(ResponseHandler.RESPONSE_CODE.TECHNICAL_ERROR);
responseHandler.setDetail(e.getMessage());
}
}
}
return handler;
}
我的问题是在执行这个方法并进入回调之后,ResponseHandler中的所有字段都是空的。我完全确定回调已执行,因为我在调试时在回调中设置了断点。
apiManagerService 对象已使用 RestAdapter 类正确初始化。
我该如何解决这个问题?
【问题讨论】: