2013-03-19 76 views
0

我序列化了一個擴展LinearLayout的類,如下面的代碼片段所示。在反序列化的同時,我得到了上述的例外。如在this鏈接中,序列化ImageView是不可能的(對於所有其他視圖,我也猜測)。那麼,有沒有其他的選擇,或者我必須去SQLite數據庫本身?建議或線索表示讚賞。反序列化時InvalidClassException和IllegalAccessException

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 
+1

首先,你爲什麼需要序列化LinearLayout? – Egor 2013-03-19 09:06:17

+0

@Egor - 很好的問題...在這裏,MyClass本身就是我的視圖,它包含一些其他自定義屬性以及視圖默認屬性。它還包含其他視圖,如EditText,TextViews等 – Braj 2013-03-19 09:15:22

+0

http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller 檢查此鏈接的MVC,這是一個很好的方法來構造你的申請。如果你遵循這種模式,你永遠不需要序列化視圖。 – Egor 2013-03-19 11:18:41

回答

1

我覺得這裏的問題是,你嘗試序列化/反序列化一個複雜的類,而不是使用「簡單」數據類作爲一個的LinearLayout領域。

因此,引入一個數據持有者(類),您可以序列化/反序列化(並單獨測試),並將其添加爲線性佈局中的屬性。

+0

哇...這爲我工作。早些時候,我正在搞亂複雜的課程,就像你告訴的那樣。現在,數據持有者讓我的工作變得輕鬆。謝謝。 – Braj 2013-03-19 10:31:00

+1

如果你還有問題,你可以發佈你的代碼嗎? @Braj – Odin 2014-02-23 09:41:55