我有我的课视频执行Parcelable
。我在构造函数上遇到问题,并且给我带来问题的是变量mSource,它是ArrayList<URI>
。我把箭头放在给我问题的线上。Implement Parcelable
public class Video implements Parcelable {
public URI mThumb;
public ArrayList<URI> mSource;
public String mTitle;
public String mSubTitle;
public String mDescription;
public Video(final URI thumb, final URI source, final String title, final String subtitle,
final String description) {
this.mThumb = thumb;
this.mSource = new ArrayList<URI>(1);
this.mSource.add(source);
this.mTitle = title;
this.mSubTitle = subtitle;
this.mDescription = description;
}
public Bundle getAsBundle() {
Bundle b = new Bundle();
b.putString("title", mTitle);
b.putString("subtitle", mSubTitle);
b.putString("description", mDescription);
b.putString("thumb", mThumb.toString());
b.putString("source", mSource.get(0).toString());
return b;
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel out, int arg1) {
// TODO Auto-generated method stub
out.writeString(mTitle);
out.writeString(mSubTitle);
out.writeString(mDescription);
out.writeString(mThumb.toString());
out.writeString(mSource.get(0).toString());
}
public static final Parcelable.Creator<Video> CREATOR = new Parcelable.Creator<Video>() {
public Video createFromParcel(Parcel in) {
return new Video(in);
}
public Video[] newArray(int size) {
return new Video[size];
}
};
private Video(Parcel in) {
mTitle = in.readString();
mSubTitle = in.readString();
mDescription = in.readString();
mThumb = new URI(in.readString());
mSource = new ArrayList<URI>();
in.readTypedList(mSource, Video.CREATOR); //<----THIS LINE RIGHT HERE.
}
}
我试过readList,readTypedList但我不断收到错误,说它不适用于参数(..);有什么建议么?
有一个自动生成的Parcelable插件。只需将它添加到android studio。并且它将通过简单地输入ALT + INSERT来创建parcelable。并从弹出的选择parcelable。 http://stackoverflow.com/a/27656775/3496570 – Nepster