如何为包含List <List <String >>的类实现Parcelable?

除了List<List<String>>之外,我的Parcelable Class中的所有字段都有Parcelable实现

 class Employee implements Parcelable { List<List<String>> details; //....... protected Employee(Parcel in) { details = new ArrayList<List<String>>(); // i know this is wrong just posting to clarify in.readList(details, List.class.getClassLoader()); //...... } public void writeToParcel(Parcel dest, int flags) { dest.writeList(details); //..... } public int describeContents() { return 0; } public static final Parcelable.Creator<Employee> CREATOR = new Parcelable.Creator<Employee>() { public Employee createFromParcel(Parcel in) { return new Employee(in); } public Employee[] newArray(int size) { return new Employee[size]; } }; } 

例外:

 05-10 19:07:44.072: E/AndroidRuntime(10661): Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@42a509e8: Unmarshalling unknown type code 3604535 at offset 268 

  • 读取整数数组并将其写入parcel
  • 读取和写入整数数组到parcel
  • 抛出ClassNotFoundException,实际上不知道为什么
  • 可添加到包裹的内部包裹中
  • 无法在Intent中传递自定义对象:方法Put Extra对于Intenttypes是不明确的
  • YouTube Android播放器API在新的YouTube版本中抛出“BadParcelableException ClassNotFoundException:unmarshalling:asc”时
  • BadParcelableException - BroadcastReceiver意图崩溃
  • Android Parcelable数组长度不对
  • 扩展ArrayList并在其上实现Parcelable为我工作。

     public class ParcelableArrayList extends ArrayList<String> implements Parcelable { private static final long serialVersionUID = -8516873361351845306L; public ParcelableArrayList(){ super(); } protected ParcelableArrayList(Parcel in) { in.readList(this, String.class.getClassLoader()); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeList(this); } public static final Parcelable.Creator<ParcelableArrayList> CREATOR = new Parcelable.Creator<ParcelableArrayList>() { public ParcelableArrayList createFromParcel(Parcel in) { return new ParcelableArrayList(in); } public ParcelableArrayList[] newArray(int size) { return new ParcelableArrayList[size]; } }; } 

    和Employee类

     class Employee implements Parcelable { List<ParcelableArrayList> details; //....... protected Employee(Parcel in) { details = new ArrayList<ParcelableArrayList>(); in.readTypedList(details,ParcelableArrayList.CREATOR); //...... } public void writeToParcel(Parcel dest, int flags) { dest.writeList(details); //..... } public int describeContents() { return 0; } public static final Parcelable.Creator<Employee> CREATOR = new Parcelable.Creator<Employee>() { public Employee createFromParcel(Parcel in) { return new Employee(in); } public Employee[] newArray(int size) { return new Employee[size]; } }; } 

    我将创build一个扩展List的类,在该类上实现Parcelable。 否则,可以将其视为正常列表,但允许它可以被分类。

    创buildclass DetailsEntry implements Parcelable包含List<String> List<DetailsEntry> details并在Employee使用List<DetailsEntry> details