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

dan*_*eds 6 android

我是Android开发的新手.在我的应用程序中,当用户更改首选项时,应调用函数来更新某些变量.

这是我目前的代码:

mypref.setOnPreferenceChangeListener(
   new OnPreferenceChangeListener() {
      public boolean onPreferenceChange(Preference arg0, Object arg1) {
         if(arg1.toString().matches("...") == false) {
            ...
            return false;
         }

         ...

         updateVariables();
         return true;
     }
});
Run Code Online (Sandbox Code Playgroud)

问题是,当updateVariables()调用时,首选项值尚未更新,并且函数会看到旧值.

private void updateVariables()
{
    SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
    Map<String, ?> savedKeys = sharedPref.getAll();

    for (Map.Entry<String, ?> entry : savedKeys.entrySet()) {
       // for each preference...
    }
}
Run Code Online (Sandbox Code Playgroud)

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

小智 5

(这里)的第二个参数是新值.我建议只是添加它作为一个参数,并只是通过对象来处理它.onPreferenceChange() arg1updateVariables()