Il se peut que votre classe ait des classes enfants, donc chacune des classes enfants dans ce cas peut renvoyer dans describeContent()
des valeurs différentes, afin que vous sachiez quel type d'objet particulier créer à partir de Parcel
. Par exemple, voici une implémentation des méthodes Parcelable
dans la classe parent (MyParent
) :
//************************************************
// Méthodes Parcelable
//************************************************
// doivent être surchargées dans les classes enfants
// MyChild_1 - renvoie 1 et MyChild_2 - renvoie 2
public int describeContents() {return 0;}
public void writeToParcel(Parcel out, int flags)
{
out.writeInt(this.describeContents());
out.writeSerializable(this);
}
public Parcelable.Creator CREATOR
= new Parcelable.Creator()
{
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];
}
};
Dans ce cas, on n'a pas besoin d'implémenter toutes les méthodes Parcelable
dans les classes enfants - sauf describeContent()