Я попытаюсь объяснить сценарий простого приложения: Мое приложение идет право на 'основное представление'. В этом основном представлении я вставил a TextView
который отображает текущие настройки, созданные посредством PreferenceManager
. Для пользы простоты скажем, у меня есть флажок в моих настройках. Когда я сначала запускаю свое приложение - TextView
на моем основном представлении показывает мой флажок, устанавливающий правильно (верный). Теперь я перехожу к меню параметров, оно открывается, и затем я изменяю его на ложь. Я возвращаюсь к основному представлению и не вижу изменения. Это все еще say's, верный даже после того, как я изменил его на ложь. Если я заканчиваю приложение и затем перезапускаю его - все хорошо, и оно показывает мое изменение.
По-видимому, основное представление просто остается в фоновом режиме, в то время как я изменяю настройки? Как я могу перерисовать или обновить основное представление после того, как я изменю настройки?
Когда вы заходите в настройки, ваша текущая активность должна приостанавливаться и возобновляться, когда вы возвращаетесь обратно (см. диаграмму жизненного цикла на диаграмме жизненного цикла на сайте android). Я думаю, что вы должны быть в состоянии вызвать некоторую перерисовку из onResume(). Это позволит повторно заполнить данные на странице. Полагаю, это сделает какой-нибудь вызов invalidate().
Вы можете реализовать OnSharedPreferenceChangeListener в своем основном Activity:
@Override
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
if (PREFKEY_OF_INTEREST.equals(key))
updateSomethingInMainView();
}
и в вызове onCreate ():
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.registerOnSharedPreferenceChangeListener(this);