2012-08-31 54 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

您能否向您的代码添加文本解释? –

相关问题