现在尝试了一段时间。我试图将JsonArray从一个意图传递到另一个意图。这是我的代码。
s = Symbol('s');
typeof s; // -> 'symbol'
p = Object.getPrototypeOf(s); // -> Symbol {}
typeof p; // -> 'object'
p+''; // -> TypeError: Method Symbol.prototype.valueOf called on incompatible receiver [object Object]
p.toString(); // -> TypeError: Method Symbol.prototype.toString called on incompatible receiver [object Object]
String(p); // -> TypeError: Method Symbol.prototype.toString called on incompatible receiver [object Object]
JSonArrayParser实现了Parcelable。
我已经检查过JSonArrayParser是否正在按照预期填充Jsonarray,然后再将它传递给Bundle。
问题是当我读出另一个意图时。我为JsonArray得到了一个空值。
这是我到目前为止所拥有的。
Intent intent = new Intent(this, DownloadService.class);
Bundle bundle = new Bundle();
JSonArrayParser jSonArrayParser = new JSonArrayParser(dealTypeList);
bundle.putParcelable("jsonArray", jSonArrayParser);
intent.putExtra("deals_list", bundle);
this.startService(intent);
我尝试了很多不同的变体来尝试读取值,但似乎JSONArray始终为null。
在发布之前已经通过互联网进行了搜索。如果有人可以提供帮助那就太好了。
提前致谢。
编辑:
我已经尝试将JSonArray作为字符串传递给以下但是似乎根本没有启动意图。
if(intent.hasExtra("jsonArray"))
{
JSonArrayParser jSonArrayParser = null;
Bundle bundle = intent.getParcelableExtra("jsonArray");
if (bundle != null) {
jSonArrayParser = bundle.getParcelable("deals_list");
String jsonMyObject = bundle.getString("deals_list");
jSonArrayParser = intent.getParcelableExtra("deals_list");
if(jSonArrayParser != null)
{
JSONArray jsonArray = jSonArrayParser.getJsonArray();
String ssad = "";
}
}
}
答案 0 :(得分:0)
我这样做你的工作。请你这样检查。
Bundle extras = getIntent().getExtras();
userName = extras.getString("user_name");
Intent logIntent = new Intent(HomePage.this, LogIn.class);
startActivity(logIntent);
检索其他类中的数据。
private Bundle extraslogin = getIntent().getExtras();
userName = extraslogin.getString("user_name");
并且你也检查了你的数据分配部分。我想,这可能对你有所帮助。您尝试在'onCreat'方法中检索其他类的数据。就像上面的代码一样。
答案 1 :(得分:0)
我认为您使用了错误的密钥......请检查..
您将Intent中的bundle与key" deal_list"放在一起。在捆绑中你有jsonarray和key" jsonArray"。
首先,你应该检查密钥" deal_list",因为你把它(捆绑)放在Intent中。然后从bundle获取密钥" jsonArray"。
检查您的代码一次。 Bundle bundle = intent.getParcelableExtra(" jsonArray");
这里你做错了,直接从Intent中获取jsonArray,而不是首先从intent中获取Bundle,然后是jsonArray。
检查此链接,看看我们如何在Intent中使用bundle。 Passing values through bundle and get its value on another activity
答案 2 :(得分:0)
您可以使用简单的putExtra传递json数组,例如:
Intent intent = new Intent(your_activity.this, new_activity.class);
intent.putExtra("jsonArray", mJsonArray.toString());
startActivity(intent);
其中,mJsonArray
是你的json数组。
现在,在 new_activity.java :
中Intent intent = getIntent();
String jsonArray = intent.getStringExtra("jsonArray");
try {
JSONArray array = new JSONArray(jsonArray);
System.out.println(array.toString(2));
} catch (JSONException e) {
e.printStackTrace();
}