如何写Parcelable()一个实现Serializable的类型的字段

Posted

技术标签:

【中文标题】如何写Parcelable()一个实现Serializable的类型的字段【英文标题】:How to writeParcelable() a field of type that implements Serializable 【发布时间】:2018-01-04 20:43:03 【问题描述】:

例如

需要实现 Parcelable 的类 City 具有实现 Serializable 的 Location 类型字段。类 Location 是从第三方 jar 文件导入的,我无法修改它。如何使用 Location 字段为 City 类成功实现 Parcelable?

【问题讨论】:

【参考方案1】:

只需使用Parcel.writeSerializable()Parcel.readSerializable()

public class MyParcelableObject implements Parcelable 

    public static final Parcelable.Creator<MyParcelableObject> CREATOR =
            new Parcelable.Creator<MyParcelableObject>() 

                @Override
                public MyParcelableObject createFromParcel(Parcel in) 
                    return new MyParcelableObject(in);
                

                @Override
                public MyParcelableObject[] newArray(int size) 
                    return new MyParcelableObject[size];
                
            ;

    private final MySerializableObject mySerializableField;

    private MyParcelableObject(Parcel in) 
        this.mySerializableField = (MySerializableObject) in.readSerializable();
    

    @Override
    public void writeToParcel(Parcel dest, int flags) 
        dest.writeSerializable(mySerializableField);
    

    @Override
    public int describeContents() 
        return 0;
    

【讨论】:

以上是关于如何写Parcelable()一个实现Serializable的类型的字段的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ArrayList<Parcelable> 正确实现 Parcelable?

Android中Intent传递对象的两种方法(Serializable,Parcelable)

如何使用包含 Hashmap 和 SparseArray 的自定义类实现 parcelable?

扩展实现 Parcelable 的类

从 parcelable 对象中读取字符串返回 null

如何在 Parcel 的帮助下将 Parcelable 编组和解组为字节数组?