In my code I do
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 ();
The registered listener looks like this
public void onSharedPreferenceChanged (SharedPreferences sharedPreferences, String key)
{
if (key.equals ("serverlist"))
{
...
}
}
On changes to preference the listener is never called. Only if i remove the preference, commit/apply it (required) and store it again the listener gets called:
edit.remove ("serverlist");
edit.apply ();
edit.putStringSet ("serverlist", servers);
edit.apply ();
Changes on simple properties (String, Boolean, ...) are properly signalled to the listener.
Am I doing something wrong?
Or - is that a known issue?