为了实现android activity之间的数据传递,主要利用意图Intent 对象的方法来完成。
基本数据类型的传递是相当简单了,主要通过如下方式完成如下:
putExtra方法来完成。
这里就不再描述。
主要是传递对象类型数据。
1、实体类需要先序列化实现Serializable接口,利用Bundle.putSerializable(Key,Object);完成数据传递。
2、实体类实现Parcelable接口,利用Bundle.putParcelable(Key, Object);完成数据传递。
在另外一个activity中通过getIntent().getSerializableExtra("key"),或getIntent().getParcelableExtra("key")获得数据。
实现Parcelable步骤
1)implements Parcelable
2)重写writeToParcel方法,将你的对象序列化为一个Parcel对象,即:将类的数据写入外部提供的Parcel中,打包需要传递的数据到Parcel容器保存,以便从 Parcel容器获取数据
3)重写describeContents方法,内容接口描述,默认返回0就可以
4)实例化静态内部对象CREATOR实现接口Parcelable.Creator
public static final Parcelable.Creator<T> CREATOR
注:其中public static final一个都不能少,内部对象CREATOR的名称也不能改变,必须全部大写。需重写本接口中的两个方法:createFromParcel(Parcel in) 实现从Parcel容器中读取传递数据值,封装成Parcelable对象返回逻辑层,newArray(int size) 创建一个类型为T,长度为size的数组,仅一句话即可(return new T[size]),供外部类反序列化本类数组使用。
简而言之:通过writeToParcel将你的对象映射成Parcel对象,再通过createFromParcel将Parcel对象映射成你的对象。也可以将Parcel看成是一个流,通过writeToParcel把对象写到流里面,在通过createFromParcel从流里读取对象,只不过这个过程需要你来实现,因此写的顺序和读的顺序必须一致。
代码如下: