Я пытаюсь передать ArrayList неизвестного типа класса, который расширяет абстрактный класс, другому действию с помощью Parcelable. Поскольку невозможно использовать Parcelable.CREATOR в абстрактном классе, при попытке создать ArrayList возникает ошибка: in.readTypedList (AbstractChannel.CREATOR), см. Ниже:
public class TvNetwork implements Parcelable {
public String name;
public ArrayList<? extends AbstractChannel> mChannels;
public TvNetwork(String name, ArrayList<? extends AbstractChannel> channels) {
this.name = name;
this.mChannels = channels;
}
protected TvNetwork(Parcel in) {
name = in.readString();
mChannels = in.readTypedList(AbstractChannel.CREATOR); // here is the error
}
public static final Creator<TvNetwork> CREATOR = new Creator<TvNetwork>() {
@Override
public TvNetwork createFromParcel(Parcel in) {
return new TvNetwork(in);
}
@Override
public TvNetwork[] newArray(int size) {
return new TvNetwork[size];
}
};
public ArrayList<? extends AbstractChannel> getChannels() {
return mChannels;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeTypedList(mChannels);
}
}
Кажется, что запись работать, но не читать. Это, очевидно, тоже не работает, но объясняет немного больше, что я хочу сделать:
in.readTypedList(mChannels, <? extends AbstractChannel>.class.getClassLoader());
Есть идеи?