您的位置:首页 > 移动开发 > Android开发

Android Intent传值 Serializable Parcelable

2016-02-04 00:00 267 查看
摘要: Intent传值,使用putExtra()时所支持的数据类型是有限的。使用Intent传递对象通过Serializable和Parcelable方式实现。

Intent传值,使用putExtra()时所支持的数据类型是有限的。使用Intent传递对象通过Serializable和Parcelable方式实现。

一. Serializable方式:

Serializable是序列化的意思,表示将一个对象转换成可存储或传输的状态。序列化后的对象可以在网络上进行传输或保存到本地。

实现方法:将数据类实现Serializable接口。

例如:

public class Person implements serializable{
String name;

public void setName(String name){
this.name = name;
}

public String getName(){
return name;
}
}

Activity跳转时:intent.putExtra("data", Person实例);

另一个Activity获取: Person person = (Person) getIntent().getSerializableExtra("data");

二. Parcelable方式:

Parcelable是将一个对象进行分解,而分解后的每一部分都是一个Intent所支持的数据类型。

实现方法:

类实现Parcelable接口,并重写describeContents()和writeToParcel()两个方法。再提供一个名为CREATOR的常量,创建Parcelable.Creator接口的一个实现,并泛型指定为Person.接着重写createFromParcel()和newArray()方法。

Activity跳转时:intent.putExtra("data", Person实例);
另一个Activity获取: Person person = (Person) getIntent().getParcelableExtra("data");
注意:Parcelable的效率比Serializable高一些。

三.页码跳转获取传值
Intent intent = getIntent();
String className = getArguments() != null ? getArguments().getString("classname") : null;
if (className == null) {
className = intent.getComponent().getClassName();
}
if (className.equals(Class1.class.getName())){}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息