当我需要将boolean
写入Parcel
时,我会这样做:
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(myBoolean ? 1 : 0);
}
但是,有没有理由让writeBoolean
方法不存在?
答案 0 :(得分:0)
您可以使用屏蔽和移位将布尔值打包到一个字节中。这将是最有效的方式,也许是他们期望你做的事情。
检查此链接https://developer.android.com/reference/android/os/Parcel.html
的“基本体”部分包裹您的布尔值..您可以使用http://www.parcelabler.com/
例如:
class BooleanSample {
Boolean flag;
}
结果:
class BooleanSample implements Parcelable {
Boolean flag;
protected BooleanSample(Parcel in) {
byte flagVal = in.readByte();
flag = flagVal == 0x02 ? null : flagVal != 0x00;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
if (flag == null) {
dest.writeByte((byte) (0x02));
} else {
dest.writeByte((byte) (flag ? 0x01 : 0x00));
}
}
@SuppressWarnings("unused")
public static final Parcelable.Creator<BooleanSample> CREATOR = new Parcelable.Creator<BooleanSample>() {
@Override
public BooleanSample createFromParcel(Parcel in) {
return new BooleanSample(in);
}
@Override
public BooleanSample[] newArray(int size) {
return new BooleanSample[size];
}
};
}