Android凌空保存json数据到字符串进行共享(onPostExecute方法为齐射?)

时间:2014-09-19 15:58:52

标签: android json android-volley

我正在使用volley库以jSON格式从api获取数据,它就像一个魅力。我要求JSON文件,我得到一个响应,我解析该响应并在活动中填充视图。

现在,我有一个使用Intetnt.ACTION_SEND和putExtra(Intent.EXTRA_TEXT)共享数据的按钮,它将字符串作为第二个参数。

问题是,我创建了一个字符串变量,并在响应方法的volley中将该数据附加到该字符串变量中。但是当volley创建一个用于从api获取数据的新线程时,字符串不会更新,Intetnt.EXTRA_TEXT会发送一个空字符串。

我想问一下,如果有什么similer到onPostExecute方法的凌空?在线程完成处理后,我可以将数据设置为某些变量。或任何其他方法来做同样的事。

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

                public void onResponse(JSONObject response) {
                    try {
                        JSONArray bookArray = response
                                .getJSONArray("items");
                        JSONObject bookObject = bookArray.getJSONObject(0);
                        try {
                            bookSelfLink = bookObject.getString("selfLink");
                            JsonObjectRequest newJsObjRequest = new JsonObjectRequest(
                                    Request.Method.GET, bookSelfLink, null,
                                    new Response.Listener<JSONObject>() {

                                        public void onResponse(
                                                JSONObject response) {
                                            try {
                                                JSONObject newBookObject = response
                                                        .getJSONObject("volumeInfo");
                                                try {
                                                    dBookPages.setText("Pages - "
                                                            + newBookObject
                                                                    .getString("pageCount"));
                                                    eMailText = eMailText + newBookObject
                                                                    .getString("pageCount")); 
                                                } catch (JSONException jse) {
                                                    dBookPages
                                                            .setText("Pages not found");
                                                    jse.printStackTrace();
                                                }

                                            } catch (JSONException e) {
                                                e.printStackTrace();
                                            }
                                        }
                                    }, new Response.ErrorListener() {

                                        @Override
                                        public void onErrorResponse(
                                                VolleyError error) {
                                            // TODO Auto-generated method
                                            // stub

                                        }
                                    });
                            AppController.getInstance().addToRequestQueue(
                                    newJsObjRequest, tag_json_obj);
                        } catch (JSONException jse) {
                            jse.printStackTrace();
                        }

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    // TODO Auto-generated method stub

                }
            });
    AppController.getInstance().addToRequestQueue(jsObjRequest,
            tag_json_obj);

1 个答案:

答案 0 :(得分:1)

来自Volley v1.0.0文档的

    public boolean hasHadResponseDelivered()

如果此请求已为其传递响应,则返回true。

我希望这个答案可以帮助有同样问题的人。