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

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

最佳答案

onPreferenceChange() 的第二个参数(此处为arg1)是新值。我建议也将其作为参数添加到updateVariables()中,然后将对象传递给它以使用它。

关于android - 如何在onPreferenceChange之后调用函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7693640/

10-12 00:40