在我的Android應用Parcelable對象的列表,我想用Intent
到SingleGroup
列表傳遞到另一個Activity
每個SingleGroup
對象包含的SingleImage
名單,這裏有類SingleImage
和SingleGroup
:Android的使用意圖發送包含另一個Parcelable對象的列表
public class SingleImage implements Parcelable{
public String name;
public int drawableId;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getDrawableId() {
return drawableId;
}
public void setDrawableId(int drawableId) {
this.drawableId = drawableId;
}
public SingleImage(String name, int drawableId)
{
this.name = name;
this.drawableId = drawableId;
}
public static final Parcelable.Creator<SingleImage> CREATOR
= new Parcelable.Creator<SingleImage>()
{
public SingleImage createFromParcel(Parcel in)
{
return new SingleImage(in);
}
public SingleImage[] newArray(int size)
{
return new SingleImage[size];
}
};
private SingleImage(Parcel in)
{
name = in.readString();
drawableId = in.readInt();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(drawableId);
}
}
這裏是SingleGroup類:
public class SingleGroup implements Parcelable{
private static final String TAG = "SINGLEGROUP";
private ArrayList<SingleImage> images = new ArrayList<SingleImage>(0);
private String myTitle;
private String groupDesc;
public SingleGroup(String mTitle, String desc, ArrayList<SingleImage> imagesList) {
this.myTitle = mTitle;
this.groupDesc = desc;
this.images = imagesList;
}
public String getGroupDesc() {
return groupDesc;
}
public String getMyTitle() {
return myTitle;
}
public void setMyTitle(String myTitle) {
this.myTitle = myTitle;
}
public ArrayList<SingleImage> getImages() {
return images;
}
public void setImages(ArrayList<SingleImage> images) {
this.images = images;
}
public static final Parcelable.Creator<SingleGroup> CREATOR
= new Parcelable.Creator<SingleGroup>()
{
public SingleGroup createFromParcel(Parcel in)
{
return new SingleGroup(in);
}
public SingleGroup[] newArray(int size)
{
return new SingleGroup[size];
}
};
private SingleGroup(Parcel in)
{
myTitle = in.readString();
groupDesc = in.readString();
//problem maybe here
in.readTypedList(images,SingleImage.CREATOR);
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(myTitle);
dest.writeString(groupDesc);
//problem maybe here
dest.writeTypedList(images);
}
@Override
public String toString() {
String result = "myTitle "+myTitle+" desc "+ groupDesc + " imagesize "+images.size();
return result;
}
}
它可以調用通過當確定通過Intent
, 而當我打電話給通ArrayLlist<SingleGroup>
通過Intent
我得到錯誤:
Parcel [email protected]: Unmarshalling unknown type code 3211379 at offset 224
任何想法?在此先感謝
----------------更新----------------
我已將in.readTypedList(images, null);
更改爲in.readTypedList(images, SingleImage.CREATOR);
但它還是行不通。相同的反編組錯誤
----------------解決問題--------------
感謝凱塔。真正的問題實際上並沒有在我的代碼中列出。當我傳遞可以分類的對象時,我還應該包含一些我錯過的其他屬性。
強烈推薦AS插件Android Parcelable code generator
謝謝,但我想在此之前,同樣的錯誤 –
你可以用插件[安卓Parcelable代碼生成器(HTTPS嘗試://plugins.jetbrains .com/plugin/7332),然後使用插件爲您的parcelable對象生成parcelable代碼 –
感謝Keita,問題解決了。 –