我正在使用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);
答案 0 :(得分:1)
:
public boolean hasHadResponseDelivered()
如果此请求已为其传递响应,则返回true。
我希望这个答案可以帮助有同样问题的人。