我认为这只是一个愚蠢的错误,但ArrayList
总是最终null
。它让我发疯,以为我会寻求帮助。
对象类:
import android.os.Parcel;
import android.os.Parcelable;
public class StoryTag implements Parcelable {
private String tagTitle;
private int occurrence;
public StoryTag() {
}
public StoryTag(Parcel in) {
tagTitle = in.readString();
occurrence = in.readInt();
}
public String getTagTitle() {
return tagTitle;
}
public void setTagTitle(String tagstring) {
this.tagTitle = tagstring;
}
public int getOccurrence() {
return occurrence;
}
public void setOccurrence(int occurrence) {
this.occurrence = occurrence;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(tagTitle);
dest.writeInt(occurrence);
}
public int describeContents() {
return 0;
}
public static final Parcelable.Creator<StoryTag> CREATOR = new Parcelable.Creator<StoryTag>() {
public StoryTag createFromParcel(Parcel in) {
return new StoryTag(in);
}
public StoryTag[] newArray(int size) {
return new StoryTag[size];
}
};
}
MainActivity
:
Intent tagIntent=new Intent(this,DisplayTagList.class);
tagIntent.putExtra("taglist", taglist);
startActivity(tagIntent);
return true;
接收活动:
Bundle storyTagBundle = getIntent().getExtras();
ArrayList<StoryTag> listoftags = storyTagBundle.getParcelable("taglist");
非常感谢您提供的任何帮助。把头发拉到这里是因为我觉得这是一个小错误。
答案 0 :(得分:4)
putExtra()
和getSerializable()
方法将存储和检索ArrayList<?>
个自定义对象,而不需要实现任何接口。 (您的自定义对象类应该实现Serializable
接口。)
但在您的情况下,您只需使用putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)
和getParcelableArrayListExtra(String name)
。
答案 1 :(得分:0)
您可以从完整的Example中获得实施ArrayList with Parcelable
的明确想法。