今天来讲向一个Activity中传递对象
在这里声明,如果一个对象要被传递,那么该对象必须通过Serializable接口或者Parcelable接口来实现对象的序列化。
Serializable为JAVA提供的对象序列化接口:效率低
Parcelable为Android提供的对象序列化接口:移动平台专用,效率高
下面,我们就针对Parcelable接口来实现对象的传递。
首先,我们来看MainActivity,这是发送对象的活动。
创建意图
Intent i = new Intent(MainActivity.this,TheAty.class);
TheAty是接收对象的活动。
通过putExtra来传递对象
i.putExtra(“user”,(Parcelable)new User(“袁雾头”,2));
在这里,我们要建立一个User类,并实现Parcelable接口
public class User implements Parcelable
其构造方法为
通过Parcelable来实现对象序列化接口,需要实现下面两个方法
我要在这里解释一下:
如果某个类实现了这个接口,那么它的对象实例可以写入到Parcel中,并且能够从中恢复,并且这个类必须要有一个static的field,并且名称要为CREATOR,这个field是某个实现了Parcelable.Creator接口的类的对象实例。
createFromParcel函数创建实现Parcelable接口的某个类的一个新的对象实例,并且用从给定的Parcel中获取的数据进行实例化,Parcel中的数据是在之前通过Parcelable.writeToParcel方式写入的数据。
newArray函数创建实现Parcelable接口的某个类的一个新的对象数组,数组中的每个项都被初始化为null。
到这来,我们完成了User类中的相关操作。
现在,我们来到TheAty,对象的接收方
在接受方只要实现下面两行代码就完成了接收
Intent i = getIntent();
User user = (User) i.getParcelableExtra(“user”);
到此,在Activity之间传递对象我们就讲完了。