我的序列化有问题。
我有一个 HomeHolder 对象,它为我的 HomeFragment 保留一些数据。HomeHolder由1个String、2个String的HashMap的ArrayList和1个包含2个String和2个Drawable的MediaHolder对象组成。
当我旋转设备时,我想恢复 HomeHolder 中包含的数据。所以我尝试在我的 HomeHolder 和我的 MediaHolder 中实现 Serializable 接口。我很确定 Drawable 不是可序列化的,但让我们试试......
我把我的 HomeHolder 作为一个可序列化的对象放在包含我的 HomeFragment 的活动的 saveInstanceState 方法的 Bundle 中(是的,我需要在 HomeFragment 的其他片段中使用这个 HomeHolder,所以我将它保留在我的活动中)并使用 onRestoreInstanceState 恢复它
好吧,现在我将旋转我的 HomeFragment 和惊喜:它工作!(不要问我为什么)。数据不是从网络加载的,而是从我的 HomeHolder 中恢复的。现在我单击启动新活动的 ImageView(例如)。哦,再惊喜:应用程序崩溃......我的 Mediaholder 中的 Drawable 对象似乎变得不可序列化。
所以我的问题是:Drawable Serializable、NotSerializable 还是有时Serializable ?
(我可以给你一些代码,但它没用:它们只是带有 getter/setter 的经典对象和经典的 onSave/onRestore 实现)。
编辑:我在调试器中看到,当我旋转或单击图像视图时,我的 HomeHolder 对象完全相同。没有什么是空的。