После изменения предпочтения (настройки) текст, отображающий настройки, не обновляется
Я попытаюсь объяснить простой сценарий приложения. Мое приложение подходит к "главному виду". В этом основном представлении я вставил 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);