2017-07-02 95 views
0

我想知道從一個活動(無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還是有任何其他方式? 感謝您的任何幫助

回答

0

你在想什麼吧!我有同樣的經驗。我認爲,最好的方法是使用廣播接收機。另一個不協調的解決方案是將getCardAPI函數帶出課程,並將其放置在使用GUI的活動中,並將代碼的其餘部分放在getCardAPI函數中。因此,您確定設置了值並且將執行代碼的其餘部分,但它是不是推薦!

+0

謝謝我會嘗試使用廣播接收器 – rollcage

相關問題