我们调查了这种奇怪的行为。
我们在主要活动中创建 OnSharedPreferenceChangeListener 并存储在静态字段中:
public static SharedPreferences.OnSharedPreferenceChangeListener listener = null;
我们也在onCreate方法中创建并注册了它。
我们有三个按钮以这种方式更改设置和调用提交:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences.Editor editor = prefs.edit();
editor.putString("setting1", "value");
editor.commit();
问题在于:
当我们点击按钮时,第一次没有引发 onSharedPreferenceChanged !当我们第二次点击时,一切正常。为什么事件没有第一次提出?
答案 0 :(得分:0)
我希望它会帮助某人:
问题是我们在onCreate方法中注册了它。如果你将在onResume方法中创建它,它是有效的。
此外,请查看此答案以了解SharedPreference的常见问题:SharedPreferences.onSharedPreferenceChangeListener not being called consistently