繁体   English   中英

从包含在其中的方法的匿名内部类内部返回数据

[英]Return data from inside an anonymous inner class for method it is contained in

我有一个进行API调用的方法,该方法需要匿名内部类。 在匿名内部类内部,有一个onResponse方法,该方法的返回类型为void ,可以在其中访问JSON。 我希望该方法返回JSON。

public JSONObject makeAPIRequest() {

 JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>(){

  @Override
  public void onResponse(JSONObject response){
   //have makeAPIRequest() return response
  }, 
  new Response.ErrorListener(){
   @Override
   public void onErrorResponse(VolleyError error){
    ...
   }
 });
}

简短的答案-您需要重构您的方法,以便它不是程序性的,并使用return ...

例如,

public void makeAPIRequest(Response.Listener<JSONObject> listener) {
   JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, listener);
   // TODO: submit request
}

然后,在其他类中,您将有一个用作“返回”的回调

apiInstance.makeAPIRequest(new Response.Listener<JSONObject>(){

  @Override
  public void onResponse(JSONObject response){
     // do stuff
  }, 
  new Response.ErrorListener(){
   @Override
   public void onErrorResponse(VolleyError error){
    ...
   }
 });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM