我有一個PreferenceActivty在我的Android應用程序,這是由於兼容性原因,我通過getPreferenceScreen()方法,我在代碼中創建一些偏好的對象,主要是CheckBoxPreference和SwitchPreference使用自行停用。偏好在PreferenceActivity
截至到以前的版本我的應用程序有共8個偏好和一切工作得很好,但現在我加2個偏好和我遇到一個非常奇怪的問題。
屏幕上的第二個首選項是SwitchPreference。當我打開活動時,它會被檢查。如果我在沒有實際改變任何東西的情況下向下滾動屏幕,突然其值會自動設置爲OFF。我嘗試將OnChangeListener添加到首選項並實現OnSharedPreferenceChangeListener,但結果相同:一旦該特定首選項從屏幕上消失,它將被關閉。如果它設置爲OFF,它將保持其值,並且不會調用更改偵聽器。
沒有人有任何想法,爲什麼會這樣發生?我完全失去了......
在此先感謝!
我的喜好的代碼基本上是這樣,重複5次,5級不同的設置,對onCreate方法:
controlWifiPreference = new CheckBoxPreference(this);
controlWifiPreference.setKey(Constants.PREF_1_KEY);
getPreferenceScreen().addPreference(controlWifiPreference);
wifiPreference = new SwitchPreference(this);
wifiPreference.setKey(Constants.PREF_2_KEY);
getPreferenceScreen().addPreference(wifiPreference);
由於偏好是一個TabActivity內,對的onResume方法我稱之爲setChecked()爲每個首選項重新設置其值,但我不確定它是否完全必要。
最後,我有一個激活/停用偏好點擊別人的時候,因爲我不能讓setDependency方法工作的onSharedPreferenceChanged方法。這是這樣的(再次,重複5次):
if (key.equals(controlWifiPreference.getKey())) {
wifiPreference.setEnabled(controlWifiPreference.isChecked());
}
請向我們展示您的偏好代碼。你有沒有嘗試在eclipse中清理你的項目?你有沒有嘗試過不同的Android版本?你有沒有設置一些onScroll偵聽器? – 2013-03-08 21:32:55
感謝您的回覆加力燃燒器,我已將代碼添加到原始問題中。 我試着清理這個項目(就像上百次:)),並嘗試了Android 4.0,4.1和4.2,結果相同。我沒有嘗試較低的Android版本,因爲我使用的是SwitchPreference。 我發現了更多...如果我用CheckBoxPreference替換SwitchPreference,它不會更改它的值。它可能是SwitchPreference本身的錯誤嗎? – LuTHieR 2013-03-09 12:12:48
您是如何在TabActivity內實現偏好的? – 2013-03-09 16:23:13