我正在使用 Retrofit HTTP 中间层进行 API 调用。由于 Retrofit 异步工作,我使用一个接口返回 API 响应。但声明的接口在Retrofit 的 OnResponse()覆盖方法中显示为 NULL 。下面是代码块,界面public interface OnResponseListener{ void getCountryListResponse(ArrayList<String> list,int responseCode); }响应 @Override public void onResponse(Call<List<Country>> call, Response<List<Country>> response) { Log.d("Response",response.body().toString()); for (Country country: response.body()) { Log.d("Country",country.toString()); Log.d("CommomName",country.getCommonName()); // Log.d("BLLL",country.getCommonName()); countryList.add(country.getCommonName()); } Log.d("Entered","Vikas Entered"); // Log.d("ResonseListener",mResponseListener.toString());//Here throwing error, mResponseListener is null object mResponseListener.getCountryListResponse(countryList,response.code()); }接口声明private OnResponseListener mResponseListener;我不知道为什么它是 NULL,即使在声明了 Object(Interface) 之后。任何帮助将不胜感激。
2 回答
米琪卡哇伊
TA贡献1998条经验 获得超6个赞
您必须在其中设置值,并从调用它的位置实现它:
创建一个方法:
public void setResponseListener(OnResponseListener mResponseListener){
this.mResponseListener = mResponseListener;
}
并从您调用此 call.enqueue() 方法的位置调用它,如以下注册:
RestClientClassObject.setResponseListener(new OnResponseListener() {
@Override
void getCountryListResponse(ArrayList<String> list, int responseCode) {
//write code you want to do with list
}
});
添加回答
举报
0/150
提交
取消