2017-07-02 8 views
0

JSONを取得し、それをアクティビティ(NO GUIなし)から他のアクティビティ(GUIを使用)まで表示するベストプラクティスは何ですか? PutExtraのjsonobjectを渡すだけでなく、Parcableクラスを作成してPutExtraParacbleとして渡すというカップルのメソッドが見つかりました。私はそれが不完全なので、私はparcableクラスのメソッドを使用し、私のMainActivityからのエキストラを取得するときにjsonを取得することができますので、1ミリ秒から5秒間(samllと巨大なJsons)他のアクティビティから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(); 
      } 
     } 

私はそれが価値を持っているdosentように、そのasyntaskはまだruningてされているためだと思う...ここ はにとって必須コード部品parcableクラスですその次のコード行に行くとき..私はちょうど放送受信者を使用するか、他の方法がありますか? 助けてくれてありがとう

答えて

0

あなたは正しいと思っています!私は同じ経験を持っていた。私の意見では、最も良い方法は、広いキャスト受信機を使用することです。もう一つの解決策は、getCardAPIクラスから関数を取り出し、GUIでアクティビティに配置し、残りのコードをgetCardAPI関数に配置することです。これは、値が設定され、残りのコードが実行されることを確信していますが、 ではなく、をお勧めします。

+0

私はブロードキャスト受信機を使用してみます – rollcage

関連する問題