[英]Android passing JsonArray from one intent to another
已经尝试了一段时间了。 我正在尝试将 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);
JSonArrayParser 实现 Parcelable。
在将 JSonArrayParser 传递给 Bundle 之前,我已经检查过是否按预期使用 Jsonarray 填充了 JSonArrayParser。
问题是当我以另一个意图读出它时。 我为 JsonArray 返回了 null。
这是我到目前为止所拥有的。
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 = "";
}
}
}
我尝试了很多不同的变体来尝试读取值,但似乎 JSONArray 始终是 null。
在发帖之前已经在 inte.net 上搜索过了。 如果有人可以提供帮助,那就太好了。
提前致谢。
编辑:
我试过将 JSonArray 作为字符串传递如下,但这似乎根本没有启动意图。
Intent intent = new Intent(your_activity.this, new_activity.class);
intent.putExtra("jsonArray", dealTypeList.toString());
startActivity(intent);
我这样工作。 请您以这种方式检查。
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”方法内检索其他类的数据。 直接像上面的代码。
我认为您使用了错误的键...请检查..
您正在使用键“ deal_list”将捆绑包放入Intent。 并且在捆绑中,您有带有键“ jsonArray”的jsonarray。
因此,首先您应该检查键“ deal_list”,因为您将其(捆绑)放在了Intent中。 然后从包中获取键“ jsonArray”。
一次检查您的代码。 捆绑包bundle = intent.getParcelableExtra(“ jsonArray”);
在这里,您做错了,直接从Intent中获取jsonArray,而不是先从intent中获取Bundle,然后再从jsonArray中获取。
检查此链接,了解我们如何在Intent中使用bundle。 通过捆绑包传递值并在另一个活动中获取其值
您可以使用简单的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();
}
我已经尝试过了,但出于某种原因它没有启动其他活动。 仅当我删除 putExtra 时才开始。 这就是我尝试 Parcable 方式的原因
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.