Обновление настроек в режиме реального времени

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

В данный момент я слушаю событие prefs change и делаю так:

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

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

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

1 ответ

Решение

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

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

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

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

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

Другие вопросы по тегам