[英]Changes on a string set in shared preferences not posted to onSharedPreferenceChanged
如果我更新设置为共享首选项的字符串,则不会收到对注册的 onSharedPreferenceChanged 方法的回调。 其他更新(非字符串集)将不会使用上述方法。
监听器代码:
public class MyFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener
{
public void onCreatePreferences (Bundle bundle, String s)
{
...
SharedPreferences preferences = <preferences>;
preferences.registerOnSharedPreferenceChangeListener (this);
...
}
public void onSharedPreferenceChanged (SharedPreferences sharedPreferences, String key)
{
if (key.equals ("stringset-key"))
{
... code to execute ...
}
}
}
更新活动:
public class MyActivity extends AppCompatActivity
{
...
SharedPreferences preferences = <preferences>;
Set<String> values = preferences.getStringSet ("stringset-key", null);
values.add ("new string");
SharedPreferences.Editor pref = preferences.edit ();
pref.putStringSet ("stringset-key, values);
pref.commit ();
...
MyFragment 用于 MyActivity。
到目前为止,我找到的唯一可行的解决方案是在设置更新值之前删除该项目(pref.remove + pref.commit)。
我遇到了与您相同的问题,似乎如果您使用相同的 Set 引用 SharedPreferences 不会检测到更改。
先前报告的相关错误: https : //issuetracker.google.com/issues/36943216
似乎唯一的方法是像您一样删除和添加设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.