【发布时间】:2017-07-02 14:57:48
【问题描述】:
我想知道获取 JSON 并显示它的最佳实践是什么,从一个活动(无 GUI)到另一个活动(有 GUI),我发现了几种方法,从仅在PutExtra,创建一个 Parcable 类,然后将其作为 PutExtraParacble 传递。但我发现它不完整,因为获取 json 可以从 1milisec 到 5 整秒不等(将有 samll 和巨大的 Jsons)所以当我使用 parcable 类方法然后从我的 MainActivity 获取额外内容时,我可以得到一个空指针异常可解析类... 这是重要的代码部分:
APIcontroller.getCardAPI("http://www.somesite.com/feeds/GetPlace", params);
Intent getJson = getIntent();
CardContent cardContent = (CardContent) getJson.getParcelableExtra("cardContent");
jsonArryCard = cardContent.getJsonArray();
然后在 APIcontroller 类中:
public void getCardAPI(String WSaddress,RequestParams params) {
AsyncHttpClient client = new AsyncHttpClient();
client.post(WSaddress,params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
try {
String respons = null;
try {
respons = responseBody == null ? null : new String(responseBody, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
JSONObject responseObject = new JSONObject(respons);
JSONArray resultsArray = responseObject.getJSONArray("places");
JSONObject taskObject = null;
for (int i = 0; i < resultsArray.length(); i++) {
// the JSON object in position i
taskObject = resultsArray.getJSONObject(i);
String temp = (String) taskObject.get("UserName");
Log.e("String test", temp);
}
CardContent cardContent = new CardContent(resultsArray);
Intent sendjson = new Intent(APIController.this, MainRegisterdActivity.class);
sendjson.putExtra("cardContent", (Parcelable) cardContent);
startActivity(sendjson);
MainRegisterdActivity.class);
Log.e("onSuccess", String.valueOf(taskObject));
} catch (JSONException e) {
e.printStackTrace();
}
}
我认为这是因为 asyntask 仍在运行,所以当它进入下一个代码行时它没有值。我应该只使用广播接收器还是有其他方法? 感谢您的帮助
【问题讨论】:
标签: java android json android-intent parcelable