【发布时间】:2018-01-09 14:38:39
【问题描述】:
问题是全局变量“responseDogs”在方法结束时被返回为 null,但填充在 onResponse 方法中!?
代码:
public class DogREST {
private List<Dog> responseDogs;
//...
public List<Dog> retrieveDogsFromREST() {
final DogService dogService = DogService.serviceDog;
dogService.getDogs(AuthRequest.createAuthJsonString()).enqueue(new Callback<DogList>() {
@Override
public void onResponse(Call<DogList> call, Response<DogList> response) {
if (response.isSuccessful()) {
responseDogs = response.body().getDogs();
Log.d("DogRESTSuccessful", "" + response.body().getDogs());
Log.d("dogsReceived - >", "" + responseDogs);
} else {
Log.d("DogRESTNSuccessful", "- statusCode" + response.code());
}
}
@Override
public void onFailure(Call<DogList> call, Throwable t) {
//...
}
});
Log.d("onRetrieveDR", ""+ responseDogs);
return reponseDogs;
}
}
注意 ->> "Log.d("DogRESTSuccessful", "" + response.body().getDogs())" 和 "Log.d("dogsReceived - >", "" + responseDogs)" 显示填充响应狗...
但retrieveDogsFromREST 返回空列表,“Log.d("onRetrieveDR", ""+ responseDogs)"也是如此
也许我写错了逻辑?身份证
【问题讨论】:
-
用response.body() 填充一个列表,然后返回,这样我就可以得到结果并在以后使用它。主要问题是该方法返回一个空列表,但如果它已填充在 onResponse() 中,这怎么可能?
标签: java android rest logic retrofit2