簡體   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