2010-05-18 61 views
3

我有一個偏好活動,我可以改變我的應用程序的語言和主題。從那裏我通過後退鍵返回到上一個活動,並且我想重新創建活動。應該onSaveInstanceState保存視圖的「啓用」?

我已經設法通過重新初始化onResume中的佈局,並從那裏調用onRestoreInstanceState。所有視圖都可以正確恢復,如果需要,可以選中複選框,編輯文本充滿我之前留下的文本。

但我也有一個最初被禁用的按鈕,並且只有在檢查單選按鈕時纔會啓用。它的問題如下:我檢查單選按鈕,該按鈕變爲啓用。然後我轉到設置,在那裏更改主題,然後返回到第一個活動。當我到達那裏時,單選按鈕被恢復爲檢查狀態,但按鈕被禁用。

所以看起來啓用/禁用狀態沒有被保存到捆綁包中,這似乎違反了直覺。而且我還沒有在Android源代碼中找到任何代碼。我是否錯過了某些東西,還是必須爲此編寫自己的代碼?

編輯:順便說一句,狀態只保存爲有ID的意見。並且該按鈕確實有一個,我保證:)

回答

0

它們的關鍵在於查看實際啓用按鈕的內容,並確保對應用程序的每次訪問都保持一致。

從你的陳述:

但我也有一個按鈕,它最初是禁用的,只有當一個單選按鈕被選中成爲啓用。

看起來你在啓用按鈕的單選按鈕上有一個監聽器。從這裏我可以瞭解到,該按鈕最初是禁用的,這意味着每次運行該活動時都必須更改該按鈕。

您的選項如下:

  • 有單選按鈕設置某種全球性的偏好這是在的onResume檢查,使按鈕,如果必要
  • 當單選按鈕被選中,改變全局設置(或者可能是GUI設置)設置爲啓用按鈕的位置。這可以永遠留下,直到單選按鈕再次被取消選中。
  • 保存的onSaveInstanceState中的enabledness你提到

這是很難分辨出哪是最合適的,因爲你沒有提到的用例的情況下,但我會避免通過捆綁除非它發送這是一個非常偶然使用的活動。通過存儲或更改視圖來跟蹤單選按鈕設置是非常有意義的,直到進一步通知。

0

最簡單的方法是在檢查單選按鈕時啓用onResume中的按鈕。

編輯PreferenceGroup可以處理意見之間的依賴關係,但它需要的活動是的PreferenceActivity一個子類。

+0

當然可以,但我有很多類似行爲的活動,並且我想要一個殺人em'-all解決方案..讓我們看看是否有任何想法出現。 – 2010-05-18 08:14:48

相關問題