1

我正在开发一个 Android 应用程序,我需要通过将我创建的类的对象传递到包中来启动新活动,以便可以在新活动中使用它。

我已经研究过如何做到这一点,似乎对于对象来说,最好的方法是让它们可包裹。但是,问题是该对象类的字段之一是 JSONArray 类型,并且似乎不支持 JSONArray?或者也许我只是看起来不够努力,或者我错过了一些东西,但我已经搜索了几个小时,但我仍然找不到任何东西。

更具体地说,我需要用一个

写X();

其中 X 可以是整数、字符串等。但是,就像我刚才说的那样,我的一个字段是 JSONArray 类型,出于某种特定原因(无论如何我都不希望更改它),而且 Parcel 似乎没有支持这个?

谢谢

4

3 回答 3

1

我能够使用 putSerializable 而不是 putParcelable 将 JSONObjects 的 ArrayList 放入一个包中。

于 2012-05-21T17:37:06.867 回答
1

感谢您的回复,但不幸的是,这个 JSONArray 包含太多不同的信息,无法正常工作(它有整数字符串、JSONObjects 甚至 JSONArrays -_-)。然而,我找到了一种方法,即使用 toString 方法将整个 JSONArray 转换为字符串。这使得将其放入 Bundle 成为可能。我真的不喜欢这样做......但我没有太多时间考虑这个太久:P。不管怎么说,还是要谢谢你

于 2011-07-19T09:36:57.347 回答
0

您是否提前知道 JSONArray 的类型是什么?如果是这样,您可以将 JSONArray 转换为已知类型的 List。

这里不支持 JSONArray,因为它不是实现 Parcelable 的类。如果您绝对无法控制 JSONArray 类型的选择,则需要将 JSONArray 转换为列表。

以下代码将已知 String 类型的 JSONArray 转换为 ArrayList:

ArrayList<String> list = new ArrayList<String>();    
JSONArray jsonArray = (JSONArray)jsonObject;
if (jsonArray != null) {
   for (int i=0;i<jsonArray.size();i++){
    list.add(jsonArray.get(i).toString());
}
于 2011-07-19T01:04:51.237 回答