如何将volley jsonobject从类返回到android中的活动

时间:2016-08-02 06:46:34

标签: android android-volley jsonobject

我正在尝试排球库响应,这里我按照我的期望获得响应,但我无法将jsonobject返回到我的活动,我打算编写一个单独的方法,将在android中的应用程序给出响应,好吧,我现在要谈到这一点,

我有一个名为Util.java的类,在这个类中我返回了如下所示的jsonobject

public JSONObject fetchResponse() {

    try {

        JSONObject json = new JSONObject();

        json = createStuff();

        URL = "my url here" + json.toString();

        final JsonObjectRequest volleyRes = new JsonObjectRequest(Request.Method.GET, URL, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                try {
                    //fetchRes = result(response);
                    //fetchRes = new JSONObject();
                    //fetchRes = new JSONObject(response.toString());
                    Log.w("UTIL res 61 ", fetchRes.toString());
                    // result(fetchRes);

                } catch (Exception e) {
                    Log.w("UTILrespon error ", "" + e);
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError e) {
                Log.w("UTIL res error ", "" + e);
            }
        });

        volleyRes.setRetryPolicy(new DefaultRetryPolicy(10000, 2, 2));
        AppController.getInstance().addToRequestQueue(volleyRes);
        Log.w("UTIL res 83 ", fetchRes.toString());

    } catch (Exception e) {

        Log.e("UTIL Error ", "" + e);
    }
    return fetchRes;

}

这里 fetchRes 是我在此方法之外声明的jsonobject

现在我的问题是,当我运行我的应用程序时,我可以从此方法获得响应

     @Override
    public void onResponse(JSONObject response) {
        try {

            //  fetchRes = result(response);
            //   fetchRes = new JSONObject();
            fetchRes = new JSONObject(response.toString());
            Log.w("UTIL res 61 ", response.toString());
            // result(fetchRes);


        } catch (Exception e) {

            Log.w("UTILrespon error ", "" + e);
        }

    }

一旦我得到了回复,我无法存储在另一个jsonobject中,并且无法返回到我在Android中的MainActivity.java ..所以请任何人帮我解决这个问题

提前致谢

2 个答案:

答案 0 :(得分:0)

创建json对象的类并使用Gson库。它直接将json字符串转换为对象。

示例: -

Gson gson = new Gson();
MyBean myBean;
myBean = gson.fromJson(response.toString,MyBeans.class);

答案 1 :(得分:0)

Define an interface
interface FetResponseListener {
    void onFetchResponse(JSONObject response);
}

将此接口作为参数传递给fetchResponse

public void fetchResponse(FetResponseListener listener) {
    ....

   @Override
    public void onResponse(JSONObject response) {
        try {
            listener.onFetchResponse(response);

        } catch (Exception e) {
            Log.w("UTILrespon error ", "" + e);
        }
    } 
}

在您致电FetResponseListener

的地方实施fetchResponse
fetchResponse(new FetResponseListener() {
    @Override
    public void onFetchResponse(JSONObject response) {
        // use json response
    }
});

或者只使用EventBus