在我的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,问题解决了。 –