父類實現Parcelable介面,子類繼承父類需要實現的操作
阿新 • • 發佈:2019-02-16
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 +
'}';
}
}