2017-01-07 3 views
1

В моем приложении, когда пользователь предоставляет три входа, начинается запуск AsyncTask, который подключается к серверу и получает информацию еще для двух полей. Как только AsyncTask закончен, я хочу установить эти два полученных значения на открытой странице настроек.Update EditTextPreference Summary on Post SyncTask

Я искал и пробовал этот код, но не обновлял сводку для полей, значение которых было выбрано с сервера.

Проблема: я не могу установить значения, полученные от сервера, в виде сводки до EditTextPreference. Если я снова открываю страницу, она показывает значение не без повторного открытия.

@Override 
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 
    updatePreference(key); 
} 

private void updatePreference(String key) { 
    if (key.equals("id")) { 
     Preference preference = findPreference(key); 
     if (preference instanceof EditTextPreference) { 
      EditTextPreference editTextPreference = (EditTextPreference) preference; 
      if (editTextPreference.getText().trim().length() > 0) { 
       editTextPreference.setSummary(editTextPreference.getText()); 
      } else { 
       editTextPreference.setSummary(""); 
      } 
     } 

    } else if (key.equals("sclass")) { 
     Preference preference = findPreference(key); 
     if (preference instanceof EditTextPreference) { 
      EditTextPreference editTextPreference = (EditTextPreference) preference; 
      if (editTextPreference.getText().trim().length() > 0) { 
       editTextPreference.setSummary(editTextPreference.getText()); 
            } else { 
       editTextPreference.setSummary(""); 
      } 
     } 
    } 
} 
+0

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

+0

получает обновленное резюме в edittextpreference, если я снова открываю страницу настроек. – Panache

+0

, чтобы вы могли отображать изменения без повторного открытия? правильно? –

ответ

0

Создать слушатель и вызвать его в onCreate

sharedPrefYourObj.registerOnSharedPreferenceChangeListener(t‌​his); 

пытается зарегистрировать вас слушатель onResume и разрегистрировать его хотя вместо onCreate!

пример:

protected void onResume() { 
     super.onResume(); 
     getPreferenceScreen().getSharedPreferences() 
       .registerOnSharedPreferenceChangeListener(this); 
    } 

    protected void onPause() { 
     super.onPause(); 
     getPreferenceScreen().getSharedPreferences() 
       .unregisterOnSharedPreferenceChangeListener(this); 
    } 
+0

Я применил слушатель в соответствии с вашим руководством. Он уже был в резюме, но я добавил для паузы, так как вы предложили отменить регистрацию. Решение не сработало. – Panache

+0

@Panache у вас есть слушатель в вашем onCreate –

+0

открытый класс FinalSettings extends PreferenceActivity реализует SharedPreferences.OnSharedPreferenceChangeListener { – Panache