我試圖在屏幕旋轉後恢復列表CheckBox
es的狀態時遇到了一些非常意想不到的(令人難以置信的令人沮喪的)功能。我想我會首先嚐試給出一個沒有代碼的文本解釋,以防某人能夠確定一個沒有所有血腥細節的解決方案。如果任何人需要更多的細節,我可以發佈代碼。Android複選框 - 屏幕旋轉後恢復狀態
我有一個包含CheckBox
es的複雜View
s的滾動列表。在屏幕旋轉後,我還沒有成功恢復這些複選框的狀態。我已實施onSaveInstanceState
並已成功將所選複選框的列表傳送到onCreate
方法。這通過將數據庫ID的long[]
傳遞給Bundle
來處理。
在onCreate()
我檢查Bundle
爲id數組。如果數組在那裏,我使用它來確定在構建列表時要檢查哪些複選框。我已經創建了許多測試方法,並且已經根據id數組確認複選框正確設置。作爲最後一個檢查,我正在檢查onCreate(
最後的所有複選框的狀態)。一切都很好......除非我旋轉屏幕。
當我旋轉屏幕時,會發生以下兩種情況之一:1)如果選中任意數量的複選框,除最後一個外,所有複選框都在旋轉後關閉。 2)如果最後一個複選框在旋轉前被選中,則所有複選框都是,旋轉後選中。
就像我說的,我檢查我的onCreate()
最後的框狀態。事情是,onCreate
結束時的方框的狀態是正確的根據我在旋轉之前選擇的內容。但是,屏幕上方框的狀態並未反映出這一點。
另外,我已經實現了每個複選框的setOnCheckChangedListener()
,我已經證實了我的複選框國家正在改變後我onCreate
方法返回。
任何人都知道發生了什麼?爲什麼我的onCreate
方法返回後,我的複選框的狀態會改變?
在此先感謝您的幫助。我一直試圖消除這一點現在幾天。當我發現我的複選框顯然在我自己的代碼之外的某個地方發生改變時,我想是時候到處打聽了。
我相信onResume在onCreate之後被調用,當你做一個方向改變時。在onResume中發生了什麼? –