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

时间:2017-07-28 17:28:15

标签: android serialization parcelable serializable

e.g

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

1 个答案:

答案 0 :(得分: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;
    }
}