通过实现Parcelable接口序列化对象的步骤:
1、实现Parcelable接口。
2、并且实现Parcelable接口的public
void writeToParcel(Parcel dest, int flags)方法 。
3、自定义类型中必须含有一个名称为CREATOR的静态成员,该成员对象要求实现Parcelable.Creator接口及其方法。
public
class
Person
implements
Parcelable {
public
static
final
Parcelable.Creator<Person> CREATOR =
new
Creator<Person>() {
@Override
public
Person[] newArray(
int
size) {
return
null
;
}
@Override
public
Person createFromParcel(Parcel source) {
Person result =
new
Person();
result.age = source.readInt();
result.name = source.readString();
result.address = source.readParcelable(Address.
class
.getClassLoader());
return
result;
}
};
private
Address address;
private
String name;
private
int
age;
@Override
public
int
describeContents() {
return
0
;
}
public
Address getAddress() {
return
address;
}
public
void
setAddress(Address address) {
this
.address = address;
}
@Override
public
void
writeToParcel(Parcel dest,
int
flags) {
dest.writeInt(age);
dest.writeString(name);
dest.writeParcelable(address, PARCELABLE_WRITE_RETURN_VALUE);
}
public
String getName() {
return
name;
}
public
void
setName(String name) {
this
.name = name;
}
public
int
getAge() {
return
age;
}
public
void
setAge(
int
age) {
this
.age = age;
}
@Override
public
String toString() {
return
"Person [address="
+ address +
", name="
+ name +
", age="
+ age
+
"]"
;
}
}
|
传递实体类:
Bundle bundle = new Bundle();
// bundle.putSerializable(TITLE, title);
bundle.putParcelable(TITLE, title);
context.startActivity(new Intent(context, target).putExtras(bundle));
接收:
mCollectParamObj = (CollectParamObj) getIntent().getParcelableExtra(
"title");