【问题标题】:List<String> readStringArray in ParcelableParcelable 中的 List<String> readStringArray
【发布时间】:2012-03-13 10:52:47
【问题描述】:

我的大部分 Parcelable 都在工作; 像 out.writeString、out.writeInt、in.readString() 等简单的东西都可以正常工作。

我的问题是当我想打包一个数组/列表/数组列表时(我都试过了)。

我目前正在尝试:

List<String>

out.writeStringList()

工作正常。

Eclipse 提示有一个

in.readStringList(List<String> list)

重新读取该数据。但它不适合我。

我们应该在 () 中放入什么?

我什么都没试过,结果是“添加参数以匹配...” 我试过 null,引用 getter 等等;都返回错误“无法从 void 转换为 List”

【问题讨论】:

    标签: android parcelable


    【解决方案1】:

    '无法从 void 转换为 List'

    从该错误看来,您正在尝试将方法 readStringList(...) 的返回类型分配给 List&lt;T&gt; 变量。换句话说:你可能会写类似的东西:

    List<String> stringList = in.readStringList(stringList)
    

    readStringList(...) 返回一个 void,所以这可能是 Eclipse 所抱怨的。您实际上应该尝试从 void 方法获取返回类型 - 在这种情况下,您需要提供结果应该作为参数分配给的变量。因此,这应该足够了:

    List<String> stringList = null;
    in.readStringList(stringList)
    

    顺便说一句,如果您正在实现 Parcelable 以便能够在活动之间传递相对简单的数据对象(使用 Intent),请考虑改用 Serializable 接口 - 它会为您节省大量工作,尤其是如果您需要对多个对象重复相同的过程。

    【讨论】:

    • 就是这样,谢谢。与 String 或 Integer 不同,您将在其中编写 x=in.readString(),您将其交换为 in.readStringList(x) - 其中 x 是您之前创建的 List。我知道 Parcelable 需要更多的工作来设置,但从我所读到的内容来看,它的性能超过了 Serializable。再次感谢。
    • HOUSEKEEPING:它正在工作,然后我“清理了我的代码”并且它停止了。如果你也被难住了;答案是idlesun.wordpress.com/2011/07/15/…
    【解决方案2】:

    写信给包裹:

    out.writeStringList(yourStringList);
    

    从包裹中读取

    List<String> newList = in.createStringArrayList();
    

    【讨论】:

      猜你喜欢
      • 2017-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      相关资源
      最近更新 更多