在我的代码中,我这样做
String name = ...
SharedPreferences prefs = ...
Set<String> servers; // = new HashSet<String> ();
SharedPreferences.Editor edit = prefs.edit ();
servers = prefs.getStringSet ("serverlist", new HashSet<String> ());
servers.add (name);
edit.putStringSet ("serverlist", servers);
edit.apply ();
注册的侦听器如下
public void onSharedPreferenceChanged (SharedPreferences sharedPreferences, String key)
{
if (key.equals ("serverlist"))
{
...
}
}
在更改首选项时,永远不会调用侦听器。仅当我删除首选项后,提交/应用(必需)并再次存储它,然后调用侦听器:
edit.remove ("serverlist");
edit.apply ();
edit.putStringSet ("serverlist", servers);
edit.apply ();
简单属性(字符串,布尔值,...)的更改已正确地告知侦听器。
我做错什么了吗?
或者-这是一个已知问题吗?