我是Android开发的新手。 在我的应用程序中,当用户更改首选项时,应调用函数来更新某些变量。
这是我目前的代码:
mypref.setOnPreferenceChangeListener(
new OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference arg0, Object arg1) {
if(arg1.toString().matches("...") == false) {
...
return false;
}
...
updateVariables();
return true;
}
});
问题是,当调用updateVariables()
时,首选项值尚未更新,函数会看到旧值。
private void updateVariables()
{
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
Map<String, ?> savedKeys = sharedPref.getAll();
for (Map.Entry<String, ?> entry : savedKeys.entrySet()) {
// for each preference...
}
}
最小侵入性解决方案是什么?谢谢!
答案 0 :(得分:5)
onPreferenceChange()
(arg1
此处)的第二个参数是新值。我建议只添加它作为updateVariables()
的参数,然后传递对象来处理它。
答案 1 :(得分:-1)
使用PreferenceFragmentCompat
{{1}}