我試圖做一個Android應用程序,將存儲窗口小部件(表示爲視圖)在數據庫中,然後能夠稍後重新創建它們。序列化Android視圖 - 從IllegalAccessException導致InvalidClassException
這裏是它的要點:
public class DBSerializer<T extends View & Serializable> {
public int storeWidget(T widget) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bytes);
out.writeObject(widget);
byte[] data = bytes.toByteArray();
bytes.close();
out.close();
<store "data" in database>;
return <unique database id>;
}
public T getWidget(int id) {
byte[] data = <get data from database for the given id>;
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(data));
return (T)in.readObject();
}
}
不幸的是,in.readObject()
拋出與消息android.view.View; IllegalAccessException
一個InvalidClassException。
由於Android的View直接擴展了Object,而Object有一個無參數的構造函數,不應該這樣工作嗎?或者它試圖用無參構造函數調用View?該錯誤消息並不十分清楚異常的確切原因是什麼。
有誰知道是什麼原因導致這種情況,以及如何解決它?
您是否設法解決您的問題? – Odin 2014-02-23 09:33:36