两个Activity之间传递含有BigDecimal类型变量的序列化(Parcelable)的实体时BIgDecimal类型数据为null

当使用Parcelable在两个Activity间传递包含BigDecimal类型变量的实体时,发现数据变为null。原因是Parcelable默认不处理BigDecimal类型。解决办法是在writeToParcel()方法中手动序列化BigDecimal,同时在构造方法中进行反序列化,确保读写顺序一致,以此保持数据完整性。
摘要由CSDN通过智能技术生成

这两天遇到一个问题,我在两个Activity之间(A-B)传递数据时,传递了一个实体,这个实体中有BIgDecimal类型的成员m,在A页面中这个m还是有值的,但是到了B页面m就变成null了,这个实体是实现了Parcelable接口来序列化的,开始总是找不到原因,后来通过看实现了Parcelable接口后实现的那几个方法,找到了原因,通过实现Parcelable接口序列化的步骤是:

这里我在实体类中定义了几种类型的数据:

private int one;
private Integer two;
private double three;
private Double four;
private long five;
private Long six;
private float seven;
private String eight;
private BigDecimal nine;

1)实现Parcelable接口

2)重写writeToParcel(Parcel dest,int flags)方法,将你的对象序列化为一个Parcel对象,即:将类的数据写入外部提供的Parcel中,打包需要传递的数据到Parcel容器保存,以便从 Parcel容器获取数据。

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeInt(one);
    if (two == null) {
        dest.writeByte((byte) 0);
    } else {
        dest.writeByte((byte) 1);
        dest.writeInt(two);
    }
    dest.writeDouble(three);
    if (four
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值