可能重复:
Parcelable where/when is describeContents() used?
实现Parcelable接口的describeContents()函数的目的是什么?大多数框架代码返回0作为实现。文档中说“一个位掩码,表示由Parcelable编组的一组特殊对象类型。”有没有人能解释一下这个功能?(可能有个例子)
发布于 2011-01-24 13:50:57
您的类可能会有子类,因此本例中的每个子类都可以在describeContent()
中返回不同的值,这样您就可以知道要从Parcel
创建哪种特定的对象类型。例如,在父类(MyParent
)中实现Parcelable
方法的示例如下:
//************************************************
// Parcelable methods
//************************************************
//need to be overwritten in child classes
//MyChild_1 - return 1 and MyChild_2 - return 2
public int describeContents() {return 0;}
public void writeToParcel(Parcel out, int flags)
{
out.writeInt(this.describeContents());
out.writeSerializable(this);
}
public Parcelable.Creator<MyParent> CREATOR
= new Parcelable.Creator<MyParent>()
{
public MyParent createFromParcel(Parcel in)
{
int description=in.readInt();
Serializable s=in.readSerializable();
switch(description)
{
case 1:
return (MyChild_1 )s;
case 2:
return (MyChild_2 )s;
default:
return (MyParent )s;
}
}
public MyParent[] newArray(int size)
{
return new MyParent[size];
}
};
在这种情况下,不需要在子类中实现所有的Parcelable
方法--除了describeContent()
https://stackoverflow.com/questions/4778834
复制相似问题