Intant传递封装类

今天在做安卓应用的时候、发现使用 Intant 传递数据已经不能满足我的需求了
所以就在找使用 Intent 传递对象的方法、经过在网络上查找、终于还是找到了
Android中Intent传递类对象提供了两种方式
一种是通过实现Serializable接口传递对象、一种是通过实现Parcelable接口传递对象
要求被传递的对象必须实现上述2种接口中的一种才能通过Intent直接传递

Intent中传递这2种对象的方法:

//实现Serializable接口的对象
Bundle.putSerializable(Key,Object);  
//实现Parcelable接口的对象
Bundle.putParcelable(Key, Object); 
以下以最常用的Serializable方式为例


下面是我自己在项目里面使用的一个对象、是封装的一张图片

public class BrowseCarData implements Serializable {
        
    private static final long serialVersionUID = 1L;
    public String mPid;
    public String mImageURL;
    public String mImageTime;
    public String mRemark;
    public ArrayList<BillDetailVoiceFile> mVoices;

    public BrowseCarData() {
    }

}
通过 Intent 将BrowseCarData 传递给另外一个 Activity

Bundle bundle = new Bundle();
bundle.putSerializable("BrowseCarData", browseCarData);
intent.putExtras(bundle);
startActivity(intent);
另外一个 Activity 接收


browseCarData = (BrowseCarData)intent.getSerializableExtra("BrowseCarData");
另外大家应该注意到了、我的BrowseCarData对象里面有一个字段是 ArrayListArrayList<BillDetailVoiceFile>

在我项目里面、这个是语音文件、下面是BillDetailVoiceFile 的代码

public class BillDetailVoiceFile implements Serializable{
        
        private static final long serialVersionUID = 1L;
    public String mPid;
    public String mRelatedType;
    public String mRelatedParentPid;
    public String mRelatedPid;
    public String mFilePath;
    public String mUploadUser;
    public String mUploadDate;
    public String mStatus;
    
    public BillDetailVoiceFile() {
        }
}
需要大家注意的是、如果类里面还引用了其它类、那么被引用的类也要Serializable 才可以

不然会抛java.lang.RuntimeException: Parcelable encountered IOException writing serializable object
原因是传递的Parcelable对象里面的对象也要Parcelable或者Serializable
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值