После изменения предпочтения (настройки) текст, отображающий настройки, не обновляется

Я попытаюсь объяснить простой сценарий приложения. Мое приложение подходит к "главному виду". В этом основном представлении я вставил TextView, который отображает текущие настройки, созданные с помощью PreferenceManager. Для простоты, скажем, у меня есть флажок в моих настройках. Когда я впервые запускаю свое приложение - TextView в моем главном представлении правильно показывает мою настройку флажка (true). Теперь я перехожу в меню настроек, оно всплывает, а затем меняю его на false. Я возвращаюсь к главному виду и не вижу изменений. Он все еще говорит правду даже после того, как я изменил его на ложный. Если я закрою приложение, а затем заново запустил его - все будет хорошо, и он покажет мои изменения.

По-видимому, основной вид просто остается в фоновом режиме, пока я меняю настройки? Как изменить или обновить основной вид после изменения настроек?

Ответы

Ответ 1

Когда вы переходите к своим предпочтениям, ваша текущая деятельность должна быть приостановлена ​​и возобновлена, когда вы вернетесь (см. диаграмму жизненного цикла диаграмму жизненного цикла на сайте android). Вы должны были бы вызвать какой-то перерисовки изнутри onResume(), я бы подумал. Это позволит репозитурировать данные на странице. Какой-то вызов invalidate() сделал бы это, я думаю.

Ответ 2

Вы можете реализовать OnSharedPreferenceChangeListener в своей основной деятельности:

@Override
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
    if (PREFKEY_OF_INTEREST.equals(key))
        updateSomethingInMainView();
}

и в вызове onCreate():

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.registerOnSharedPreferenceChangeListener(this);