【问题标题】:Return data from inside an anonymous inner class for method it is contained in从匿名内部类中返回包含在其中的方法的数据
【发布时间】:2019-04-28 02:02:50
【问题描述】:

我有一个需要匿名内部类的 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){
    ...
   }
 });
}

【问题讨论】:

  • 没有 void 类这样的东西。

标签: java android android-volley anonymous-class


【解决方案1】:

简短的回答 - 您需要重构您的方法,使其不是程序性的并使用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){
    ...
   }
 });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    相关资源
    最近更新 更多