Serializable Parcelable

Android中Intent中如何传递对象,一种是 Bundle.putSerializable(Key,Object);另一种是Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口

1.Serializable

对象类:

public class User implements Serializable{

    public User(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public int age;
    public String name;
}

传递类:

Bundle bundle = new Bundle();

bundle.putSerializable("user", new User(26, "xiaohong"));

Intent intent = new Intent(this, DemoActicity.class);

intent.putExtras(bundle);

startActivity(intent);

接受类:

User user = (User)getIntent().getExtras().getSerializable("user");

Parcelable

对象类:

public class Student implements Parcelable{

    public int number;
    public String name;

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

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeInt(number);
        parcel.writeString(name);
    }

    /**
     * 1.此处必须加上 public static final
     * 2.此处变量名字必须为  CREATOR
     */
    public static final Parcelable.Creator<Student> CREATOR = new Parcelable.Creator<Student>() {
        @Override
        public Student createFromParcel(Parcel parcel) {
            Student student = new Student();
            student.number = parcel.readInt();
            student.name = parcel.readString();
            return student;
        }

        @Override
        public Student[] newArray(int i) {
            return null;
        }
    };
}

传递类:

Student student = new Student();

student.number = 1;

student.name = "xiaohong";

Bundle bundle = new Bundle();

bundle.putParcelable("student", student);

Intent intent = new Intent(this, DemoActicity.class);

intent.putExtras(bundle);

startActivity(intent);

接受类:

User user = (User)getIntent().getExtras().getParcelable("user");

原文地址:https://www.cnblogs.com/lianghui66/p/2944589.html