如何在* onPreferenceChange之后调用函数*?

时间:2011-10-07 23:03:30

标签: android

我是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...
    }
}

最小侵入性解决方案是什么?谢谢!

2 个答案:

答案 0 :(得分:5)

onPreferenceChange() arg1此处)的第二个参数是新值。我建议只添加它作为updateVariables()的参数,然后传递对象来处理它。

答案 1 :(得分:-1)

使用PreferenceFragmentCompat

{{1}}