频道栏目
IT货架 > > 正文
Android2个Activity之间传递对象
网友分享于:Jan 1, 1970 8:00:00 AM    来源: IT货架   

标签:android   对象序列化   activity传递数据   

为了实现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从流里读取对象,只不过这个过程需要你来实现,因此写的顺序和读的顺序必须一致。

代码如下:

Serializable实现与Parcelabel实现的区别

1)Serializable的实现,只需要implements  Serializable 即可。这只是给对象打了一个标记,系统会自动将其序列化。

2)Parcelabel的实现,不仅需要implements  Parcelabel,还需要在类中添加一个静态成员变量CREATOR,这个变量需要实现 Parcelable.Creator 接口。

两者代码比较:

1)创建Person类,实现Serializable

2)创建Book类,实现Parcelable


Android2个Activity之间传递对象

标签:android   对象序列化   activity传递数据   

广告服务联系QQ:1134687142 | 网站地图

版权所有: IT货架- 内容来自互联网,仅供用于技术学习,请遵循相关法律法规. 京ICP备11030978号-1