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

例如

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

【问题讨论】:

    标签: android serialization parcelable serializable


    【解决方案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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      • 2021-09-23
      • 2013-02-21
      • 1970-01-01
      • 2016-01-03
      • 2016-10-22
      相关资源
      最近更新 更多