为了账号安全,请及时绑定邮箱和手机立即绑定

接口声明为 NULL

接口声明为 NULL

一只萌萌小番薯 2021-09-15 14:44:39
我正在使用 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


        }


    });


查看完整回答
反对 回复 2021-09-15
  • 2 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信