Activity Intent 传递参数之 Parcelable

一、创建 继承 Parcelable的bean,

代码中 writeToParcel 回调方法完成序列化,

createFromParcel回调方法完成反序列化
(注释:如果bean中变量是类则该类也要继承Parcelable)

例如:

public class Person implements Parcelable {
private Address address;
private String name;
private int age;
public static final Parcelable.Creator<Person> CREATOR = new Parcelable.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;
}
};

@Override
public int describeContents() {
return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(age);
dest.writeString(name);
dest.writeParcelable(address, PARCELABLE_WRITE_RETURN_VALUE);
}

public Address getAddress() {
return address;
}

public void setAddress(Address address) {
this.address = address;
}

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
+ "]";
}
}

二、第一个activity 发送 Parcelable对象
Person person = new Person();
person.setAge(2);

Intent intent = new Intent(this,MainActivity.class);
intent.putExtra("person",person);
this.startActivity(intent);


三、第二个activity 接收 Parcelable对象
Person person = (Person) getIntent().getParcelableExtra(
"person");

原文地址:https://www.cnblogs.com/adamli/p/13228847.html