1. 程式人生 > >父類實現Parcelable介面,子類繼承父類需要實現的操作

父類實現Parcelable介面,子類繼承父類需要實現的操作

show me the code

public class A implements Parcelable {

    public String str;

    public boolean is;

    public int count;

    public A() {

    }

    protected A(Parcel in) {
        str = in.readString();
        is = in.readByte() != 0;
        count = in.readInt();
    }

    public static
final Creator<A> CREATOR = new Creator<A>() { @Override public A createFromParcel(Parcel in) { return new A(in); } @Override public A[] newArray(int size) { return new A[size]; } }; @Override public int
describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(str); dest.writeByte((byte) (is ? 1 : 0)); dest.writeInt(count); } @Override public String toString() { return "A{" + "str='"
+ str + '\'' + ", is=" + is + ", count=" + count + '}'; } }
public class B extends A {

    public String bStr;

    public int test;

    public B() {
        super();
    }

    public static final Parcelable.Creator<B> CREATOR = new Parcelable.Creator<B>() {
        public B createFromParcel(Parcel in) {
            // new自己
            return new B(in);
        }

        public B[] newArray(int size) {
            // new自己
            return new B[size];
        }
    };

    public int describeContents() {
        return 0;
    }

    public void writeToParcel(Parcel out, int flags) {
        // 呼叫父類的寫操作
        super.writeToParcel(out, flags);

        // 子類實現的寫操作
        out.writeString(bStr);
        out.writeInt(test);
    }

    protected B(Parcel in) {
        // 呼叫父類的讀取操作
        super(in);
        // 子類實現的讀取操作
        bStr = in.readString();
        test = in.readInt();
    }

    @Override
    public String toString() {
        return "B{" +
                "str='" + str + '\'' +
                ", bStr='" + bStr + '\'' +
                ", is=" + is +
                ", test=" + test +
                ", count=" + count +
                '}';
    }
}