Android将JsonArray从一个Intent传递到另一个Intent

qgzx9mmu  于 2022-12-30  发布在  Android
关注(0)|答案(3)|浏览(257)

我已经尝试了一段时间了。我正在尝试将JsonArray从一个Intent传递到另一个Intent。下面是我的代码。

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实现了可打包。
在将Jsonarray传递给Bundle之前,我已经检查了JSonArrayParser是否按预期填充了Jsonarray。
问题是当我在另一个意图上读出来的时候。我得到了一个空的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 = "";
                }
            }
        }

我已经尝试了很多不同的变体来尝试读取值,但似乎JSONArray总是null。
在发布这篇文章之前,我已经在网上搜索过了。如果有人能帮忙,那就太好了。
先谢了。
编辑:
我尝试过如下所示将JSonArray作为字符串传递,但这似乎根本没有启动意图。

Intent intent = new Intent(your_activity.this, new_activity.class);
intent.putExtra("jsonArray", dealTypeList.toString());
startActivity(intent);
vmjh9lq9

vmjh9lq91#

我是这样做你的工作的。请你检查这边。

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'方法。直接像上面的代码。

r9f1avp5

r9f1avp52#

我想你用错钥匙了...请检查一下...
您正在将bundle放入Intent中,键为“deal_list”。在bundle中,您拥有键为“jsonArray”的jsonarray。
所以首先你应该检查键“deal_list”,因为你把它(bundle)放在Intent中,然后从bundle中获取键“jsonArray”。
检查一次代码。Bundle bundle = intent.getParcelableExtra(“jsonArray”);
这里您做错了,直接从Intent中获取jsonArray,而不是先从Intent中获取Bundle,然后再获取jsonArray。
查看此链接,了解我们如何在Intent.Passing values through bundle and get its value on another activity中使用bundle

hc2pp10m

hc2pp10m3#

您可以使用简单的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();
}

相关问题