【发布时间】:2012-08-31 11:01:38
【问题描述】:
我有一个应用程序需要使用 AsyncTask 从 URL 下载 JSON,并在 onPostExecute() 上使用 putExtra 方法将该 JSON 对象传递给下一个 Activity,但我不断收到错误消息,显示“putExtra 只能用于传递字符串而不是对象”?如何解决这个问题?
【问题讨论】:
标签: android json android-intent
我有一个应用程序需要使用 AsyncTask 从 URL 下载 JSON,并在 onPostExecute() 上使用 putExtra 方法将该 JSON 对象传递给下一个 Activity,但我不断收到错误消息,显示“putExtra 只能用于传递字符串而不是对象”?如何解决这个问题?
【问题讨论】:
标签: android json android-intent
传递参数时这样做:
intent.putExtra("json", jsonobj.toString());
然后在你的新活动中像这样解析它:
JSONObject obj = new JSONObject(getIntent().getStringExtra("json"));
【讨论】:
protected void onPostExecute(Object result){ Intent startApp = new Intent("com.example.androidhive.HOME"); startApp.putExtra(R.id.param, result.toString()); startActivity(startApp); //finish(); }
在您获取 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 是数据中存在的字段。例如“企业 ID”1 这里的业务 id 是 JSON 值,用你的替换它
【讨论】:
你应该通过putExtra传递一个可序列化或可打包的对象,因为JSONObject既不是可序列化的也不是可打包的对象,所以你不能通过putExtra传递它。
所以你需要通过解析 JSONObject 来创建 Parcelable 或 Serializable 类,然后你可以使用 putExtra 方法来传递它。
另一个选项是从 jsonOjbect 传递 JSON 字符串。
【讨论】: