以编程方式更改它们后更新首选项值

时间:2014-01-16 19:54:18

标签: java android sharedpreferences updates

我有一个简单的PreferenceActivity 在我的活动中使用存储在这些键中的值 通过getDefaultSharedPreferencesgetBoolean("somekey")

如果我现在改变与“somekey”相关联的首选项,一切正常,而且 getBoolean返回正确的值。

但如果我以编程方式将值“somekey”设置为另一个值,则 通过Preferences.Editor设置视图不会更新为新值! 像这样:

pref_edit.putBoolean("somekey", true);
pref_edit.commit();

如果之前“somekey”为真,我现在通过getBoolean("somekey");获得价值 它是true,就像我改变它一样,但是偏好中的复选框错过了这个改变 为什么?如何更新偏好设置视图?

1 个答案:

答案 0 :(得分:0)

嗯,有效的问题并不容易 - 有些人说finish,有些人说say

setPreferenceScreen(null);
addPreferencesFromResource(R.xml.preferences);

以及为了避免这些措施以及它们在平板电脑上造成的混乱而最终做的是注册SharedPreferences.OnSharedPreferenceChangeListener(将我的偏好活动设置为一个)并且当我检测到其中的变化时更新我的复选框的首选项(如果它的值不同于存储的首选项 - 所以它没有手动更改,因为如果手动更改我有onClick更改默认共享首选项)。确实很烦人。