Если я обновляю строку с общими настройками, я не получаю обратный вызов зарегистрированному методу 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) перед установкой обновленного значения.