2012-08-31 51 views
6

我有一個應用程序需要使用AsyncTask從onSQL下載JSON並使用onPostExecute()將該JSON對象傳遞給下一個使用putExtra方法的活動,但我不斷收到錯誤,讀取「putExtra只能用於傳遞字符串而不是對象」?如何解決這個問題?如何將JSON對象傳遞給新的活動

intent.putExtra("json", jsonobj.toString()); 

而在你的新的活動解析它像這樣:

回答

25

經過帕拉姆當做到這一點

JSONObject obj = new JSONObject(getIntent().getStringExtra("json")); 
+0

我不明白,R.id.param部分,這裏是代碼'保護無效onPostExecute(對象結果){ \t \t \t意圖startApp =新意圖(「com.example.androidhive.HOME」); \t \t \t startApp.putExtra(R.id.param,result.toString()); \t \t \t startActivity(startApp); \t \t \t // finish(); \t \t}' –

+0

這只是關鍵,你可以把你想要的東西放在那裏。 –

+0

刪除R.id.param並傳遞任何字符串作爲鍵 –

1

您應該通過putExtra傳遞一個序列化或parcelable對象,JSONObject的既不是可序列化的也不可parcelable對象,所以你不能通過putExtra傳遞它。

因此,您需要製作一個Parcelable或Serializable類來解析JSONObject,然後您可以使用putExtra方法來傳遞它。

另一個選項是從jsonOjbect傳遞JSON字符串。

0

在活動中,你所得到的JSON數據寫入下面的代碼發送到TAB活動

Intent i = new Intent(getApplicationContext(), Another_Activity.class); 
          i.putExtra("key", jsonObject.toString()); 
          startActivity(i); 

訪問數據,即JSON對象寫在標籤活動將下面的代碼

JSONObject jsonObject = new JSONObject(getIntent().getStringExtra("key")); 
        Toast.makeText(Another_Activity.this, ""+jsonObject.get("Your JSON VALUE"), Toast.LENGTH_SHORT).show(); 

您的JSON VALUE是存在於數據中的字段。例如,「商業標識」 1個 這裏的業務ID是JSON值,與你更換

+0

您能否向您的代碼添加文本解釋? –

相關問題