我们可以使用Parcelable以及Serializable来传递自定义对象(普通的单种类型使用getStringExtra()这一类来获取数据)
1. Serializable方式
public class Person implements Serializable{
private String name;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2 .Parcelable方式
public class Student implements Parcelable {
private String name;
private int age;
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 int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name); //写出name
dest.writeInt(age); //写出age
}
public static final Creator<Student> CREATOR = new Creator<Student>() {
@Override
public Student createFromParcel(Parcel source) {
Student student = new Student();
student.name = source.readString(); //读取 name
student.age = source.readInt(); //读取 age
return student;
}
@Override
public Student[] newArray(int size) {
return new Student[size];
}
};
}
然后在Activity中实现Intent的传递数据:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Person person = new Person();
person.setName("happy");
person.setAge(12);
Student student = new Student();
student.setName("unhappy");
student.setAge(14);
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("person_data", person);
intent.putExtra("student_data", student);
startActivity(intent);
}
}
public class SecondActivity extends AppCompatActivity{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Person person = (Person) getIntent().getSerializableExtra("person_data");
Student student = getIntent().getParcelableExtra("student_data");
Log.v("person", "Name: " + person.getName() + "\nAge: " + person.getAge());
Log.v("student", "Name: " + student.getName() + "\nAge: " + student.getAge());
}
}