1 该类需要实现Parcelable接口. (有插件Parcelable实现很方便)
2 类有一个静态成员变量CREATOR.
3 这个CREATOR的类须实现Parcelable.CREATOR接口.
public interface Parcelable
{
//内容描述接口,基本不用管
public int describeContents();
//写入接口函数,打包
public void writeToParcel(Parcel dest, int flags);
//读取接口,目的是要从Parcel中构造一个实现了Parcelable的类的实例处理。因为实现类在这里还是不可知的,所以需要用到模板的方式,继承类名通过模板参数传入
//为了能够实现模板参数的传入,这里定义Creator嵌入接口,内含两个接口函数分别返回单个和多个继承类实例
public interface Creator<T>
{
public T createFromParcel(Parcel source);
public T[] newArray(int size);
}
}
1)implements Parcelable
2)重写writeToParcel方法,将你的对象序列化为一个Parcel对象,即:将类的数据写入外部提供的Parcel中,打包需要传递的数据到Parcel容器保存,以便从 Parcel容器获取数据
3)重写describeContents方法,内容接口描述,默认返回0就可以 return 0
4)实例化静态内部对象CREATOR实现接口Parcelable.Creator 实现2个方法 createFromParcel()返回单个实例 newArray()返回多个 return T[size]即可
class Person implements Parcelable {
private String name;
private int id;
public Person() {
}
protected Person(Parcel in) {
name = in.readString();
id = in.readInt();
}
public static final Creator<Person> CREATOR = new Creator<Person>() {
@Override
public Person createFromParcel(Parcel in) {
return new Person(in);
}
@Override
public Person[] newArray(int size) {
return new Person[size];
}
};
public void setName(String name) {
this.name = name;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public int getId() {
return id;
}
@Override
public int describeContents() {
return 0;
}
@Override
public String toString() {
return "name:" + getName() + " id:" + getId();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(id);
}
Parcelable接口使用
最新推荐文章于 2023-03-07 19:09:59 发布