在Parcelable中列出<String> readStringArray

Dav*_*Sav 10 android parcelable

我的大部分Parcelable都在工作; 像out.writeString,out.writeInt,in.readString()等简单的东西工作得很好.

我的问题是当我想要Parcel一个Array/List/ArrayList(我已经尝试过所有这些).

我目前正在尝试:

List<String>
Run Code Online (Sandbox Code Playgroud)

out.writeStringList()
Run Code Online (Sandbox Code Playgroud)

工作良好.

Eclipse建议有一个

in.readStringList(List<String> list)
Run Code Online (Sandbox Code Playgroud)

重新读取这些数据.但它不适合我.

我们应该把什么放入()?

我没有尝试任何东西,结果是'添加参数匹配......'我尝试过null,引用getter等等; 所有返回错误'无法从void转换为List'

MH.*_*MH. 22

'无法从void转换为List'

从这个错误,它听起来就像你想的方法的返回类型分配readStringList(...)给一个List<T>变量.换句话说:你是否可能写下这样的东西:

List<String> stringList = in.readStringList(stringList)
Run Code Online (Sandbox Code Playgroud)

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

List<String> stringList = null;
in.readStringList(stringList)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果你要实现Parcelable以便能够在活动之间传递相对简单的数据对象(使用Intents),请考虑使用Serializable接口 - 这将节省大量的工作,特别是如果你需要对多个对象重复相同的过程.


Vit*_*nko 20

写入包裹:

out.writeStringList(yourStringList);
Run Code Online (Sandbox Code Playgroud)

从包裹中读取

List<String> newList = in.createStringArrayList();
Run Code Online (Sandbox Code Playgroud)