我正在使用 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條經(jīng)驗 獲得超6個贊
您必須在其中設置值,并從調用它的位置實現(xiàn)它:
創(chuàng)建一個方法:
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
提交
取消