繁体   English   中英

Android Parcelable:如何读/写字符串数组列表和整数数组

[英]Android Parcelable: How to read / write string array lists and integer arrays

我在尝试将字符串数组列表和整数数组写入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);
    }

有人可以告诉我该怎么做,我找不到我的问题在互联网上的教程。 谢谢你的阅读

如果查看Parcel 的文档 ,readStringList()显示:

读入给定的List items在当前dataPosition()中使用writeStringList(List)编写的String对象。

返回一个新创建的ArrayList,其中包含与先前写入的数据相同的数据字符串。

它要求您传入的List <>非null(因为它将填充它)。 由于这是你的构造函数,我希望你的参数为null,这就是你崩溃的原因。 您应该使用Parcel#createStringArrayList()来返回一个新的List:

从当前dataPosition()使用writeStringList(List)编写的parcel中读取并返回一个包含String对象的新ArrayList。 如果先前写入的列表对象为null,则返回null。

返回一个新创建的ArrayList,其中包含与先前写入的数据相同的数据字符串。

例如:

set1Numbers = in.createStringArrayList();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM