Android关于Intent传值报Parcelable encountered IOException writing serializable object的异常

今天采用Intent传值,忽然报错“Parcelable encountered IOException writing serializable object”,让我一怔,这不是常规传值方法吗?传的值已经实现了serializable接口,并且传递对象中只定义了两个基本属性,太简单了,竟然还报错,最后用我的华山七十二试解决掉了,这里记录一下

报错点

Intent qri= new Intent();
 qri.putExtra("hint", "将二维码放入框内,即可自动扫描");
 qri.putExtra("extra", mData);
 qri.setClass(getContext(), QRCodePayActivity.class);
 qri.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
 if (getOwnerActivity() != null) {
     getOwnerActivity().startActivityForResult(qri, requestCode);
 }

其中mData的实体是

static class DataBean implements Serializable {
        private String sameDepartureNo;
        private double amount;

        public DataBean(String sameDepartureNo, double amount) {
            this.sameDepartureNo = sameDepartureNo;
            this.amount = amount;
        }

        public String getSameDepartureNo() {
            return sameDepartureNo;
        }

        public void setSameDepartureNo(String sameDepartureNo) {
            this.sameDepartureNo = sameDepartureNo;
        }
 }

最终解决

将DataBean实体get、set方法补全即可。

总结

  1. Intent传值序列化对象时get、set方法要么都有要么全部没有。(容易遗漏)
  2. 如果一个可序列化的类的成员不是基本类型,也不是String类型,那这个引用类型也必须是可序列化的;否则,会导致此类不能序列化。

更多序列化知识可参考 https://blog.ixin.run/posts/1480596660

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值