我有一个应用程序需要使用AsyncTask从URL下载JSON,并在onPostExecute()中使用putExtra方法将该JSON对象传递给下一个Activity,但是我经常会遇到一个错误,错误信息为“putExtra只能用于传递字符串而不是对象”?如何解决这个问题?
我有一个应用程序需要使用AsyncTask从URL下载JSON,并在onPostExecute()中使用putExtra方法将该JSON对象传递给下一个Activity,但是我经常会遇到一个错误,错误信息为“putExtra只能用于传递字符串而不是对象”?如何解决这个问题?
传递参数时执行此操作:
intent.putExtra("json", jsonobj.toString());
在您的新活动中,请像以下这样解析它:
JSONObject obj = new JSONObject(getIntent().getStringExtra("json"));
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值是数据中存在的字段。例如,“Business Id” 1,其中business id是JSON值,请将其替换为您自己的值。
在使用putExtra方法时,你应该传递一个可序列化或可封装的对象,而不是JSONObject对象,因为它既不是可序列化的也不是可封装的对象,所以无法通过putExtra方法进行传递。
因此,你需要从解析JSONObject对象中创建一个Parcelable或Serializable类,然后才能使用putExtra方法进行传递。
另一个选择是从jsonObject传递JSON字符串。
protected void onPostExecute(Object result){ Intent startApp = new Intent("com.example.androidhive.HOME"); startApp.putExtra(R.id.param, result.toString()); startActivity(startApp); //finish(); }
- Silvio Marijic