来自:http://blog.csdn.net/frank4014/article/details/7181799
在Activity之间通过Intent和Bundle能够很好地传递java支持的基础类型,但是有时候我们需要在Activity之间传递对象甚至传递对象列表。
传递对象
如果需要传递对象,对象需要继承Serializable接口,在Bundle中有一个putSerializable方法。
- public class User implements Serializable {
- //其他代码省略
- }
public class User implements Serializable {
//其他代码省略
}
在Activity1中的java代码
- User user = new User();
- Intent intent = new Intent(MyActivity.this,OthereActivity.class);
- intent.putSerializable("user", user);
- startActivity(intent);
User user = new User();
Intent intent = new Intent(MyActivity.this,OthereActivity.class);
intent.putSerializable("user", user);
startActivity(intent);
在Activity2中获取的java代码
- Intent intent = getIntent();
- CustomeClass cc=(CustomeClass)intent.getSerializableExtra("user");
Intent intent = getIntent();
CustomeClass cc=(CustomeClass)intent.getSerializableExtra("user");
传递对象列表
如果传递对象列表需要实现Parcelable接口。
- public class Person implements Parcelable {
- private int age;
- private String name;
- private String sex;
- public void setAge(int age) {
- this.age = age;
- }
- public int getAge() {
- return age;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getName() {
- return name;
- }
- public void setSex(String sex) {
- this.sex = sex;
- }
- public String getSex() {
- return sex;
- }
- public int describeContents() {
- return 0;
- }
- public static final Parcelable.Creator<Person> CREATOR = new Creator<Person>() {
- public Person createFromParcel(Parcel source) {
- // TODO Auto-generated method stub
- Person p = new Person();
- p.age = source.readInt();
- p.name = source.readString();
- p.sex = source.readString();
- return p;
- }
- public Person[] newArray(int size) {
- // TODO Auto-generated method stub
- return new Person[size];
- }
- };
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeInt(age);
- dest.writeString(name);
- dest.writeString(sex);
- }
- }
public class Person implements Parcelable {
private int age;
private String name;
private String sex;
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSex() {
return sex;
}
public int describeContents() {
return 0;
}
public static final Parcelable.Creator<Person> CREATOR = new Creator<Person>() {
public Person createFromParcel(Parcel source) {
// TODO Auto-generated method stub
Person p = new Person();
p.age = source.readInt();
p.name = source.readString();
p.sex = source.readString();
return p;
}
public Person[] newArray(int size) {
// TODO Auto-generated method stub
return new Person[size];
}
};
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(age);
dest.writeString(name);
dest.writeString(sex);
}
}
在Activity1中发送的java代码
- intent.putParcelableArrayListExtra("plist", plist);
intent.putParcelableArrayListExtra("plist", plist);
- startActivity(intent);
startActivity(intent);
在Activity2中接收的java代码
- ArrayList<Person> plist = getIntent().getParcelableArrayListExtra("plist");