Java 反序列化时InvalidClassException和IllegalAccessException

Java 反序列化时InvalidClassException和IllegalAccessException,java,android,serialization,deserialization,Java,Android,Serialization,Deserialization,我序列化了一个扩展LinearLayout的类,如下面的代码片段所示。在反序列化时,我遇到了上述异常。和link一样,序列化ImageView是不可能的(我想对于所有其他视图也是如此)。那么,有没有其他选择,或者我必须选择SQLite数据库本身?欢迎提供建议或线索 public class MyClass extends LinearLayout implements java.io.Serializable { private static final long serialVersion

我序列化了一个扩展LinearLayout的类,如下面的代码片段所示。在反序列化时,我遇到了上述异常。和link一样,序列化ImageView是不可能的(我想对于所有其他视图也是如此)。那么,有没有其他选择,或者我必须选择SQLite数据库本身?欢迎提供建议或线索

public class MyClass extends LinearLayout implements java.io.Serializable {


private static final long serialVersionUID = 1L;

private String mThemeImageName;
private ArrayList<STCharacter> mCharacterList;
private String mStoryText;
private int mSceneNumber;
private boolean mIsSceneHasCharacters;

public STScene(Context context) {
    super(context);
}

public STScene(Context context, AttributeSet attrs) {
    super(context, attrs);
}

//getters and setters below
公共类MyClass扩展LinearLayout实现java.io.Serializable{
私有静态最终长serialVersionUID=1L;
私有字符串mThemeImageName;
私有数组列表mCharacterList;
私有字符串mStoryText;
私人国际电话号码;
私有布尔错误字符;
公共场景(上下文){
超级(上下文);
}
公共场景(上下文、属性集属性){
超级(上下文,attrs);
}
//下面是接受者和接受者

我认为这里的问题在于,您尝试序列化/反序列化复杂类,而不是在LinearLayout中使用“简单”数据类作为字段


因此,引入一个可以序列化/反序列化(并单独测试)的数据保持器(类),并将其作为属性添加到线性布局中。

首先,为什么需要序列化线性布局?@Egor-好问题…这里,MyClass本身就是我的视图,它包含一些其他自定义属性以及视图默认属性。它还包含其他视图,如EditText、TextView等。请检查MVC上的此链接,这是一个很好的way来构造你的应用程序。如果你遵循这种模式,你将永远不需要序列化视图。@Egor-谢谢你的d链接。哇……这对我很有用。之前我把复杂的类搞乱了,正如你所说的。现在,数据持有者让我的工作变得简单了。谢谢。如果你还有代码,你能发布代码吗?@Braj