我有一个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