7

我有一个应用程序需要使用 AsyncTask 从 URL 下载 JSON,并在 onPostExecute() 上使用 putExtra 方法将该 JSON 对象传递给下一个 Activity,但我不断收到错误消息,显示“putExtra 只能用于传递字符串和不是对象”?如何解决这个问题?

4

3 回答 3

29

传递参数时执行此操作:

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

在你的新活动中,像这样解析它:

JSONObject obj = new JSONObject(getIntent().getStringExtra("json"));
于 2012-08-31T11:04:17.523 回答
2

在您获取 JSON 数据的活动中,编写以下代码以发送到 TAB 活动

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

访问数据即 JSON 对象在选项卡 Activity 中编写以下代码

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

您的 JSON VALUE 是数据中存在的字段。例如 "Business Id" 1 这里的业务 id 是 JSON 值,用你的替换它

于 2016-06-08T09:50:19.140 回答
1

您应该通过 putExtra 传递一个可序列化或可打包的对象,因为 JSONObject 既不是可序列化的也不是可打包的对象,因此您不能通过 putExtra 传递它。

所以你需要通过解析 JSONObject 来创建 Parcelable 或 Serializable 类,然后你可以使用 putExtra 方法来传递它。

另一个选项是从 jsonOjbect 传递 JSON 字符串。

于 2012-08-31T11:12:02.927 回答