我在尝试将String数组列表和整数数组写入parcel时遇到问题。
这是我的班级字段
String uniqueDate;
ArrayList <String> set1Numbers;
ArrayList <String> set2Numbers;
ArrayList <String> UIDs;
int[] selectedStatus;
此部分将数据写入parcel
public void writeToParcel(Parcel dest, int flags)
{
dest.writeString(uniqueDate);
dest.writeStringList(set1Numbers);
dest.writeStringList(set2Numbers);
dest.writeStringList(UIDs);
dest.writeIntArray(selectedStatus);
}
这部分读了它。我认为问题出在这里
PNItems(Parcel in)
{
this.uniqueDate = in.readString();
in.readStringList(set1Numbers);
in.readStringList(set2Numbers);
in.readStringList(UIDs);
in.readIntArray(selectedStatus);
}
有人可以告诉我该怎么做,我找不到我的问题在互联网上的教程。感谢您阅读
答案 0 :(得分:8)
如果查看Parcel的the documentation,readStringList()会显示:
在当前的dataPosition()中读入给定的List项目使用writeStringList(List)编写的String对象。
返回 新创建的ArrayList,包含与先前写入的数据库相同的数据。
它要求List&lt;&gt;你传入的是非null(因为它将填充它)。由于这是你的构造函数,我希望你的参数为null,这就是你崩溃的原因。您应该使用Parcel#createStringArrayList()
返回新的列表:
从当前dataPosition()中使用writeStringList(List)编写的parcel中读取并返回一个包含String对象的新ArrayList。如果先前写入的列表对象为null,则返回null。
返回 新创建的ArrayList,包含与先前写入的数据库相同的数据。
例如:
set1Numbers = in.createStringArrayList();