繁体   English   中英

Android 将 JsonArray 从一个意图传递到另一个意图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM