为啥 Parcel.writeBoolean(boolean) 不存在? [复制]
Posted
技术标签:
【中文标题】为啥 Parcel.writeBoolean(boolean) 不存在? [复制]【英文标题】:Why Parcel.writeBoolean(boolean) doesn't exist? [duplicate]为什么 Parcel.writeBoolean(boolean) 不存在? [复制] 【发布时间】:2016-08-10 06:43:29 【问题描述】:当我需要将boolean
写入Parcel
时,我会这样做:
@Override
public void writeToParcel(Parcel dest, int flags)
dest.writeInt(myBoolean ? 1 : 0);
但是,方法writeBoolean
不存在有什么原因吗?
【问题讨论】:
如果你真的想要,请使用writeValue
或许你可以看看这个:code.google.com/p/android/issues/detail?id=5973
【参考方案1】:
您可以使用屏蔽和移位将布尔值打包成一个字节。这将是最有效的方法,并且可能是他们希望你做的。
查看此链接 https://developer.android.com/reference/android/os/Parcel.html 的 Primitives 部分
包裹你的布尔值..你可以使用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];
;
【讨论】:
Parcel.writeByte()
在内部使用 Parcel.writeInt()
。你应该写 int 值。以上是关于为啥 Parcel.writeBoolean(boolean) 不存在? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥dependencyManagement中有spring-boot-dependencies?