我的大部分Parcelable都在工作; 简单的东西,比如out.writeString,out.writeInt,in.readString()等都运行得很好。
我的问题是当我想要包裹数组/列表/数组列表时(我已经尝试了所有这些)。
我目前正在尝试:
List<String>
和
out.writeStringList()
工作正常。
Eclipse建议有一个
in.readStringList(List<String> list)
重新读取数据。但它并没有为我做这件事。
我们应该把什么放入()?
我没有尝试过,结果是'添加参数来匹配......' 我尝试过null,参考吸气剂等等;所有返回错误'无法从void转换为List'
答案 0 :(得分:22)
'无法从void转换为List'
从该错误中听起来您正试图将方法readStringList(...)
的返回类型分配给List<T>
变量。换句话说:你是在写一些类似的东西:
List<String> stringList = in.readStringList(stringList)
? readStringList(...)
返回一个void,因此可能是Eclipse抱怨的内容。实际应该不尝试从void方法获取返回类型 - 在这种情况下,您需要提供应将结果指定为参数的变量。因此,这应该足够了:
List<String> stringList = null;
in.readStringList(stringList)
顺便说一下,如果你要实现Parcelable以便能够在活动之间传递相对简单的数据对象(使用Intents),那么考虑使用Serializable接口 - 这将节省大量的工作,特别是如果你需要为多个对象重复相同的过程。
答案 1 :(得分:19)
写入包裹:
out.writeStringList(yourStringList);
从包裹中读取
List<String> newList = in.createStringArrayList();