如果SharedPreference字符串集已更改,则不会调用onPreferenceChanged

时间:2019-03-06 07:16:38

标签: android

在我的代码中,我这样做

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 ();

简单属性(字符串,布尔值,...)的更改已正确地告知侦听器。

我做错什么了吗?
或者-这是一个已知问题吗?

0 个答案:

没有答案