我有序列化的問題。可繪製的可串行化或不是或有時?
我有一個HomeHolder對象,它爲我的HomeFragment保留了一些數據。 HomeHolder由1個String,2個String的HashMap的ArrayList和1個包含2個String和2個Drawable的MediaHolder對象組成。
當我旋轉我的設備時,我想恢復包含在我的HomeHolder中的數據。所以我嘗試在我的HomeHolder和MediaHolder中實現Serializable接口。我很確定Drawable不是可序列化的,但是讓我們嘗試...
我把我的HomeHolder作爲一個Serializable對象包含saveInstanceState活動的方法,該方法持有我的HomeFragment(是的,我需要使用這個HomeHolder在其他片段,HomeFragment,所以我保留它在我的活動),並恢復它與onRestoreInstanceState
好吧,現在我將旋轉我的HomeFragment和驚喜:它的工作! (不要問我爲什麼)。數據不是從網站加載,而是從我的HomeHolder中恢復。 現在我點擊一個ImageView(例如)啓動一個新的活動。哦,再次驚喜:應用程序崩潰......我的Mediaholder中的Drawable對象似乎變得不可序列化。
所以我的問題是:Drawable Serializable,NotSerializable或SometimesSerializable? (我可以給你一些代碼,但它是沒用的:這只是經典的對象與getter/setter和經典的onSave/onRestore實現)。
編輯:我看到調試器,當我旋轉或當我點擊ImageView時,我的HomeHolder對象完全相同。沒有東西是空的。
是的,我想我應該不會......這只是一個嘗試,我會用自己的方式做,但我不明白爲什麼它在輪換工作,而不是當我離開活動時。 Thx的答案和細節:) – QLag