Обновление настроек в режиме реального времени - PullRequest
1 голос
/ 30 сентября 2011

У меня есть экран настроек, в котором есть некоторые префы, которые связаны между собой. Это означает, что если у меня есть pref x и y, мне иногда нужно y, чтобы изменить что-то, когда x изменится.

В данный момент я слушаю событие изменения префс и делаю это:

SharedPreferences.Editor editor = prefs.edit();
editor.putString("y_pref", "somevalue");
editor.commit();

Проблема в том, что для того, чтобы увидеть изменения, мне нужно сначала закрыть экран prefs, а затем открыть его снова, только так я увижу вновь установленные prefs.

Есть ли способ изменить префы, чтобы изменения были видны сразу, без необходимости перезагружать экран префов?

1 Ответ

4 голосов
/ 30 сентября 2011

Попробуйте вызвать установщик самого предпочтения, вместо этого обновив его самостоятельно:

Например EditTextPreference . setText () .Таким образом, предпочтение само обновляет свою ценность.Если вы выполните обновление самостоятельно, предпочтение не будет извлекать новое значение, поскольку оно даже не знает, что постоянное значение изменилось.

Если у вас есть PreferenceFragment, вы можете получить предпочтение с помощью PreferenceFragment.findPreference () .

Если у вас есть PreferenceActivity, вы можете получить предпочтение с помощью PreferenceActivity.findPreference () .

Вы называете это с помощью ключа предпочтения, который вы назначили в XML-файле настроек, и вы получите экземпляр соответствующего предпочтения.Затем вы преобразуете его в CheckBoxPreference, EditTextPreference и т. Д. (Тип, который вы задали в своем XML-файле).

...