猿问

接口声明为 NULL

我正在使用 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) 之后。任何帮助将不胜感激。


一只萌萌小番薯
浏览 163回答 2
2回答

米琪卡哇伊

您必须在其中设置值,并从调用它的位置实现它:创建一个方法:public void setResponseListener(OnResponseListener mResponseListener){&nbsp; &nbsp; this.mResponseListener = mResponseListener;}并从您调用此 call.enqueue() 方法的位置调用它,如以下注册:&nbsp; &nbsp; RestClientClassObject.setResponseListener(new OnResponseListener() {&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; void getCountryListResponse(ArrayList<String> list, int responseCode) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //write code you want to do with list&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; });
随时随地看视频慕课网APP

相关分类

Java
我要回答