在Parcelable中编写/读取数组或Stringarrays

时间:2013-03-21 17:56:20

标签: java android parcel

为了在我的应用程序中的两个活动之间传递一个对象,我让这个类实现了Parcable,一切正常。现在我想用一个String Arrays数组(String [] [])扩展这个类。

我在互联网上搜索了一段时间,但我找不到办法在writeToParcel(Parcel dest, int flags)和构造函数MyClass(Parcel in)中处理此问题。

另一种选择是创建一个只有2个字符串stringA和stringB的类,并让该类实现Parcable。然后我可以使用readList()和writeList()来编写Parcables的列表,但这似乎不是一个理想的解决方案。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

Parcel类有一个writeStringArray()方法。你的类不能遍历String [] []并为每个函数调用writeStringArray吗?

假设你的班级有一名成员:

String[][] data;

在writeToParcel()

parcel.writeInt(data.length);
for( int i=0; i<data.lengh; i++ ){
    parcel.writeStringArray(data[i]);
}

在createFromParcel()

int size = parcel.readInt();
data = new String[size][];
for( int i=0; i<size; i++ ){
  data[i] = parcel.readStringArray();
}