Android Intent传递类对象_安卓Activity之间数据传递
程序员文章站
2022-03-01 16:04:44
...
今天在做安卓应用的时候、发现使用 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