После изменения предпочтения (настройки) текст, отображающий настройки, не обновляется - PullRequest
13 голосов
/ 14 апреля 2010

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

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

Ответы [ 2 ]

22 голосов
/ 18 апреля 2010

Вы можете реализовать 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);
4 голосов
/ 14 апреля 2010

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

...