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

时间:2015-10-04 02:46:48

标签: android json android-intent

现在尝试了一段时间。我试图将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 = "";
                }
            }
        }

3 个答案:

答案 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();
}