我想知道從一個活動(無GUI)到另一個活動(使用GUI)獲取JSON並顯示它的最佳做法是什麼發現了幾種方法,從傳遞PutExtra中的jsonobject到創建Parcable類,然後將其作爲PutExtraParacble傳遞。但我發現它不完整,因爲得到一個JSON可以從1milisec變化到5整秒(將有大小和巨大的Jsons),所以當我使用parcable類的方法,然後從我的MainActivity得到額外的我可以得到一個空指針異常在parcable類... 這裏是importent部分代碼:從其他活動獲取JSON的最佳做法是什麼
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仍然乳寧所以它dosent有一個值當它去到下一個代碼行..我應該只使用廣播reciver還是有任何其他方式? 感謝您的任何幫助
謝謝我會嘗試使用廣播接收器 – rollcage