从另一个类方法返回的对象

时间:2014-11-06 10:40:32

标签: java android oop android-volley

我觉得这是一个非常基本的概念误解。在我的Android应用程序中,我使用Volley lib发出HTTP请求。起初我通过活动代码中的JsonObjectRequest发出请求并且工作正常,但现在我将一个类中的请求代码分开,所以我可以从任何Activity调用它。新类有一个返回请求的JSONObject的方法,但我对返回的对象执行的任何“json操作”都以错误结束。

这是新的类代码,JSONRequests:

public class JSONRequests {

  private JSONObject mResponse;
  private String mURL = "https://myurl.com/";

  public JSONObject getJSONObject(final String credentials, final String path) {
    final JsonObjectRequest mRequest = new JsonObjectRequest(mURL.concat(path), null,
      new Response.Listener<JSONObject>() {

        @Override
        public void onResponse(JSONObject response) {
          mResponse = response;
          try {
           Log.d("RESPONSE", mResponse.getString("id")); // It works here
          } catch (JSONException e) {
            e.printStackTrace();
          }
        }
      },

      new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
        }
      }
    ) {

      @Override
      public Map<String, String> getHeaders() throws AuthFailureError {
        HashMap<String, String> headers = new HashMap<String, String>();
        headers.put("Authorization", "Basic " + credentials);
        return headers;
      }
    };
    MyApplication.getInstance().getRequestQueue().add(mRequest);
    return mResponse;
  }
}

以下是我从MyActivity调用getJSONObject的方法:

JSONRequests mRequest = new JSONRequests();
JSONObject mInfo = mRequest.getJSONObject(mEncodedCredentials, mPath);
try {
  Log.d("RESPONSE", mInfo.getString("id")); // This doesn't work
} catch (JSONException e) {
  e.printStackTrace();
}

当在Activity文件中时,我使用“response”作为JSONObject并且它工作,但现在分开它不会。我不知道JSONObject是错误还是我没有以正确的方式获取返回的对象。提前谢谢。

0 个答案:

没有答案