自定义类上不可序列化的异常-Android

自定义类上不可序列化的异常-Android,android,android-intent,intentservice,notserializableexception,Android,Android Intent,Intentservice,Notserializableexception,所以我试图将我通过意图创建的类的实例传递给一个新的活动 public class Room implements Serializable{ /** * */ private static final long serialVersionUID = 6857044522819206055L; int roomID; String roomName; ArrayList<MarkerHolder> markerHo

所以我试图将我通过意图创建的类的实例传递给一个新的活动

public class Room implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 6857044522819206055L;


    int roomID;

    String roomName;

    ArrayList<MarkerHolder> markerHolders = new ArrayList<MarkerHolder>();


    public int getRoomID() {
        return roomID;
    }
    public void setRoomID(int roomID) {
        this.roomID = roomID;
    }

    public String getRoomName() {
        return roomName;
    }
    public void setRoomName(String roomName) {
        this.roomName = roomName;
    }       

    public ArrayList<MarkerHolder> getMarkerHolders() {
        return markerHolders;
    }
    public void setMarkerHolders(ArrayList<MarkerHolder> markerHolders) {
        this.markerHolders = markerHolders;
    }       
}

public class MarkerHolder implements Serializable{
    /**
     * 
     */
    private static final long serialVersionUID = -7334724625702415322L;
    String marker;
    String markerTag;
    public String getMarker() {
        return marker;
    }
    public void setMarker(String marker) {
        this.marker = marker;
    }
    public String getMarkerTag() {
        return markerTag;
    }
    public void setMarkerTag(String markerTag) {
        this.markerTag = markerTag;
    }
}

我不断得到一个不可序列化的异常,我无法理解。这两个类都实现了可序列化并具有串行ID。成员变量只是字符串、int和另一个类的数组,该类也可序列化,只包含字符串。就我所知,所有这些东西都应该是可序列化的,还有什么会导致这个错误呢?提前感谢。

尝试将ArrayList更改为MarkerHolder的本机数组:

MarkerHolder[] markerHolders;
更新:我的坏消息。我一直使用本机数组进行序列化,因此不知道ArrayList确实是可序列化的

您的代码看起来是正确的。logcat中打印的确切错误消息是什么(即哪个类引发了序列化异常)


另一个解决方案(更多工作)是让对象实现可分配接口。

这些类是活动的内部类还是其他类?如果是这样,它们有一个对外部类的引用(外部类可能是可序列化的,也可能不是可序列化的),您可以通过使这些类
成为静态的
来解决这个问题

例如:

public static class Room implements Serializable
{
    //your implementation
}

public static class MarkerHolder implements Serializable
{
    //your implementation
}

尝试使用getApplicationContext()context安装此应用程序

实际上,
ArrayList
是可序列化的:嗯,是的,我需要使用ArrayList,因为我需要动态添加元素(在Java中不能这样做,对吗?)上面的代码还有什么问题吗?这些类都是创建意图的类的内部类将这两个类标记为
static
,如上例所示。@pat或将这些类移动到它们自己的java文件中!是的,我发誓我早就试过了。谢谢,请添加轨迹跟踪。ArrayList是可序列化的。
public static class Room implements Serializable
{
    //your implementation
}

public static class MarkerHolder implements Serializable
{
    //your implementation
}