我试图将一个parcel从mainActivity发送到一个片段,我发现了一个奇怪的效果。
当你实现parcelable时,android需要实现" writeToParcel"和" describeContents"。 奇怪的是,如果你在里面写东西" writeToParcel"或者没有,这没关系。 Android从不称呼它。
为什么需要这些功能?
这是一个有效的源代码:
public class Movie implements Parcelable {
private String title;
private Float score;
public Movie(String title, float score) {
this.title = title;
this.score = score;
}
...... Getter和Setter ......
//Parcelable Methods
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// Don't need to write anything in this area
/*
dest.writeString(title);
dest.writeFloat(score);
*/
}
public static final Parcelable.Creator<Movie> CREATOR = new Parcelable.Creator<Movie>() {
//--------------> You can return null, it's never called and work perfectly!
public Movie createFromParcel(Parcel in) {
return null;//new Movie(in);
}
public Movie[] newArray(int size) {
return null;//new Movie[size];
}
};
}
任何想法?
此致