【问题标题】:How to return volley jsonobject from class to activity in android如何将凌空jsonobject从类返回到android中的活动
【发布时间】:2016-08-02 06:46:34
【问题描述】:

我正在尝试 volley 库响应,在这里我得到了符合我期望的响应,但我无法将 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.. 所以请任何人帮助我摆脱这个问题

提前致谢

【问题讨论】:

    标签: android android-volley jsonobject


    【解决方案1】:

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

    例子:-

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

    【讨论】:

    • 好的,但是我正在使用不同的不同 bean 类,所以这个想法在应用程序中不起作用,如果我可以返回没有 null 的 jsonobject,这对我来说就足够了,谢谢
    【解决方案2】:
    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);
            }
        } 
    }
    

    在调用fetchResponse的地方实现FetResponseListener

    fetchResponse(new FetResponseListener() {
        @Override
        public void onFetchResponse(JSONObject response) {
            // use json response
        }
    });
    

    或者直接使用EventBus

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-31
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多