要求:找出price
是否为空。由于原语浮点数据类型总是0.0,因此不能检查其是否为空,因此我选择使用Float
代替,因为可以检查其是否为空。
public class QOptions implements Parcelable {
public String text;
public Float price;
}
protected QOptions(Parcel in) {
text = in.readString();
unit_price = in.readFloat();
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(this.text);
parcel.writeFloat(this.price);
}
但是,由于该类也实现了
Parcelable
,因此writeToParcel
崩溃,出现以下异常:试图在空对象引用上调用虚方法“浮点java.
例外情况是这一行:
包裹,书面贷款(这个价格);
如何将
Float
数据类型与writeToParcel一起使用而不导致异常?还是有更好的方法来满足我的要求?我只需要价格为零,如果它是零。 最佳答案
你可以用下面的方式处理。
@Override
public void writeToParcel(Parcel dest, int flags) {
if (price == null) {
dest.writeByte((byte) (0x00));
} else {
dest.writeByte((byte) (0x01));
dest.writeFloat(price);
}
}
读取浮点值-
unit_price = in.readByte() == 0x00 ? null : in.readFloat();