我有一个应用程序需要使用AsyncTask从onSQL下载JSON并使用onPostExecute()将该JSON对象传递给下一个使用putExtra方法的活动,但我不断收到错误,读取“putExtra只能用于传递字符串而不是对象”?如何解决这个问题?如何将JSON对象传递给新的活动
intent.putExtra("json", jsonobj.toString());
而在你的新的活动解析它像这样:
我有一个应用程序需要使用AsyncTask从onSQL下载JSON并使用onPostExecute()将该JSON对象传递给下一个使用putExtra方法的活动,但我不断收到错误,读取“putExtra只能用于传递字符串而不是对象”?如何解决这个问题?如何将JSON对象传递给新的活动
intent.putExtra("json", jsonobj.toString());
而在你的新的活动解析它像这样:
经过帕拉姆当做到这一点
JSONObject obj = new JSONObject(getIntent().getStringExtra("json"));
您应该通过putExtra传递一个序列化或parcelable对象,JSONObject的既不是可序列化的也不可parcelable对象,所以你不能通过putExtra传递它。
因此,您需要制作一个Parcelable或Serializable类来解析JSONObject,然后您可以使用putExtra方法来传递它。
另一个选项是从jsonOjbect传递JSON字符串。
在活动中,你所得到的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值,与你更换
您能否向您的代码添加文本解释? –
我不明白,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}' –
这只是关键,你可以把你想要的东西放在那里。 –
删除R.id.param并传递任何字符串作为键 –