实时更新首选项

时间:2011-09-29 21:31:51

标签: android android-preferences

我有一个偏好设置屏幕,其中有一些互连的首选项。这意味着,如果我有pref xy,我有时需要y更改为x更改时的内容。

我现在正在做的是听prefs change事件,并执行此操作:

SharedPreferences.Editor editor = prefs.edit();
editor.putString("y_pref", "somevalue");
editor.commit();

问题是,为了实际看到更改,我必须首先关闭prefs屏幕,然后再次打开它,只有这样才能看到新设置的prefs。

有没有办法更改prefs以便立即看到更改,而无需重新加载prefs屏幕?

1 个答案:

答案 0 :(得分:4)

尝试调用首选项本身的setter,而不是自己更新它:

E.g。 EditTextPreferencesetText()。所以偏好本身也会更新它自己的价值。如果您自己进行更新,则首选项将不会获取新值,因为它甚至不知道持久值已更改。

如果您有PreferenceFragment,则可以使用PreferenceFragment.findPreference()获得偏好。

如果您有PreferenceActivity,则可以使用PreferenceActivity.findPreference()获得偏好。

使用您在设置XML文件中指定的首选项键调用它,然后获得相应首选项的实例。然后将其转换为CheckBoxPreferenceEditTextPreference等(您在XML文件中设置的类型)。

相关问题