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