settlementItemeBase
课程作为我的父亲和两个孩子。我想让父类成为parcelable
,所以当扩展发生时,我的两个子类也是parcelable
。我不知道我在做什么是对还是错。我搜索了一下,但没有任何帮助我。
这是我的课程:
SettlementItemBase:
public class SettlementItemBase implements Parcelable{
public SettlementItemBase(){}
protected SettlementItemBase(Parcel in) {
}
public static final Creator<SettlementItemBase> CREATOR = new Creator<SettlementItemBase>() {
@Override
public SettlementItemBase createFromParcel(Parcel in) {
return new SettlementItemBase(in);
}
@Override
public SettlementItemBase[] newArray(int size) {
return new SettlementItemBase[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
}
}
第一个孩子班:
public class FirstClass extends SettlementItemBase {
private int id;
private int cardId;
private String cardNumber;
private String expDate;
private String currency;
private String url;
public FirstClass(){
id = 0;
cardId = 0;
cardNumber = "";
expDate = "";
currency = "";
url = "";
}
protected FirstClass(Parcel in) {
super(in);
id = in.readInt();
cardId = in.readInt();
cardNumber = in.readString();
expDate = in.readString();
currency = in.readString();
url = in.readString();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeInt(cardId);
dest.writeString(cardNumber);
dest.writeString(expDate);
dest.writeString(currency);
dest.writeString(url);
}
public int getId() {
return id;
}
public int getCardId() {
return cardId;
}
public String getCardNumber() {
return cardNumber;
}
public String getExpDate() {
return expDate;
}
public String getCurrency() {
return currency;
}
public String getUrl() {
return url;
}
}
第二个孩子班:
public class SecondClass extends SettlementItemBase{
private int id;
private String currency;
private String accountNumber;
private String ibanNumber;
public SecondClass(int id, String currency,
String accountNumber, String ibanNumber){
this.id = id;
this.currency = currency;
this.accountNumber = accountNumber;
this.ibanNumber = ibanNumber;
}
protected SecondClass(Parcel in){
super(in);
id = in.readInt();
currency = in.readString();
accountNumber = in.readString();
ibanNumber = in.readString();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeString(currency);
dest.writeString(accountNumber);
dest.writeString(ibanNumber);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCurrency() {
return currency;
}
public String getAccountNumber() {
return accountNumber;
}
public String getIbanNumber() {
return ibanNumber;
}
}
我正在传递并使用intent putParcelableArrayListExtra
和getParcelableArrayListExtra
方法获取两个子类项的ArrayList,并收到以下错误:
Parcel android.os.Parcel@2d0fde33: Unmarshalling unknown type code 3276849 at offset 172
任何帮助将不胜感激3&gt;
答案 0 :(得分:0)
我正在为可能遇到与我相同问题的人发布此信息。
将Creator
语句添加到子类后,问题得以解决。
对于其中一个子类,它将是:
public static final Creator<FirstClass> CREATOR = new Creator<FirstClass>() {
@Override
public FirstClass createFromParcel(Parcel in) {
return new FirstClass(in);
}
@Override
public FirstClass[] newArray(int size) {
return new FirstClass[size];
}
};
希望这会有所帮助。 3 GT;