【问题标题】:InvalidClassException and IllegalAccessException while deserializing [closed]反序列化时的 InvalidClassException 和 IllegalAccessException [关闭]
【发布时间】:2013-03-19 09:01:38
【问题描述】:

我序列化了一个扩展 LinearLayout 的类,如下面的代码 sn-p 所示。在反序列化时,我遇到了上述异常。在this 链接中,序列化 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

【问题讨论】:

  • 首先,为什么需要序列化一个LinearLayout?
  • @Egor - 好问题...在这里,MyClass 本身就是我的视图,其中包含一些其他自定义属性以及视图默认属性。它还包含其他视图,如 EditText、TextViews 等
  • en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller 在 MVC 上查看此链接,这是构建应用程序的好方法。如果您遵循这种模式,您将永远不需要序列化视图。
  • @Egor - 感谢 d 链接。

标签: java android serialization deserialization


【解决方案1】:

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

所以引入一个数据持有者(类),您可以对其进行序列化/反序列化(并单独测试),并将其作为属性添加到您的线性布局中。

【讨论】:

  • 哇...这对我有用。正如你所说,早些时候我把复杂的课程搞砸了。现在,数据持有者让我的工作变得轻松。谢谢。
  • 如果您还有代码,您可以发布代码吗? @Braj
猜你喜欢
  • 1970-01-01
  • 2022-11-11
  • 2015-03-20
  • 2013-01-21
  • 1970-01-01
  • 2013-12-18
  • 2012-09-22
  • 2012-12-26
  • 1970-01-01
相关资源
最近更新 更多