source.readList 的 Parcelable 不适用于 List<String>
source.readList of Parcelable doesn't work over List<String>
此行被 IDE 标记为红色:
mBook.Color=source.readList(Color,Book.class.getClassLoader());
我也改成了
mBook.Color=source.readList(Color,String.class.getClassLoader());
但仍然错误,我认为这是因为我的代码缺少 color
字段的 getter & setter,但是在创建它们之后,还是错了。我确定这不是使字段可分割的方法,但也不知道正确的方法
Book.java :
public class Book implements Parcelable {
private String bookName;
private int publishTime;
private static List<String> Color = Arrays.asList(new String[]{"red","blue"});
public String getBookName() {
return bookName;
}
public static List<String> getColor() {
return Color;
}
public static void setColor(List<String> Color) {
Book.Color = Color;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public int getPublishTime() {
return publishTime;
}
public void setPublishTime(int publishTime) {
this.publishTime = publishTime;
}
public static final Parcelable.Creator<Book> CREATOR = new Creator<Book>() {
public Book createFromParcel(Parcel source) {
Book mBook = new Book();
mBook.bookName = source.readString();
mBook.publishTime = source.readInt();
mBook.Color =source.readList(Color,Book.class.getClassLoader());
return mBook;
}
public Book[] newArray(int size) {
return new Book[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int flags) {
parcel.writeString(bookName);
parcel.writeInt(publishTime);
parcel.writeList(Color);
}
}
问题是 readList
returns 无效,所以这可能是您的 IDE 所抱怨的。解决方案如下:
mBook.Color = null;
source.readList(Color,Book.class.getClassLoader());
希望对您有所帮助。
此行被 IDE 标记为红色:
mBook.Color=source.readList(Color,Book.class.getClassLoader());
我也改成了
mBook.Color=source.readList(Color,String.class.getClassLoader());
但仍然错误,我认为这是因为我的代码缺少 color
字段的 getter & setter,但是在创建它们之后,还是错了。我确定这不是使字段可分割的方法,但也不知道正确的方法
Book.java :
public class Book implements Parcelable {
private String bookName;
private int publishTime;
private static List<String> Color = Arrays.asList(new String[]{"red","blue"});
public String getBookName() {
return bookName;
}
public static List<String> getColor() {
return Color;
}
public static void setColor(List<String> Color) {
Book.Color = Color;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public int getPublishTime() {
return publishTime;
}
public void setPublishTime(int publishTime) {
this.publishTime = publishTime;
}
public static final Parcelable.Creator<Book> CREATOR = new Creator<Book>() {
public Book createFromParcel(Parcel source) {
Book mBook = new Book();
mBook.bookName = source.readString();
mBook.publishTime = source.readInt();
mBook.Color =source.readList(Color,Book.class.getClassLoader());
return mBook;
}
public Book[] newArray(int size) {
return new Book[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int flags) {
parcel.writeString(bookName);
parcel.writeInt(publishTime);
parcel.writeList(Color);
}
}
问题是 readList
returns 无效,所以这可能是您的 IDE 所抱怨的。解决方案如下:
mBook.Color = null;
source.readList(Color,Book.class.getClassLoader());
希望对您有所帮助。