2012-01-29 1 views
0

Здесь я немного смущен. Я пытаюсь изменить значение EditTextPreference, но он не обновляется в представлении. (Это в PreferenceActivity)SharedPreferences.Editor не обновляется после первоначальной фиксации

Вот мой код:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.modify_instrument_preferences); 

    // Set default values 
    SharedPreferences customSharedPreference = PreferenceManager.getDefaultSharedPreferences(this); 
    SharedPreferences.Editor editor = customSharedPreference.edit(); 
    modifying = getObjectWithName(); //Some object with a name; 

    editor.putString("namePref", modifying.getName()); 
    editor.commit(); 
    android.util.Log.d("TEST", "written: "+customSharedPreference.getString("namePref","")); 
} 

Мои printlns распечатать достоверную информацию, и фиксации() возвращает истину, но при щелчке на EditTextPreference, он отображает старое значение. Если я поворачиваю экран, заставляя onCreate снова запускаться, значение EditTextPreference имеет правильное значение.

Такое недоумение. Почему это изменение не изменяется в пользовательском интерфейсе?

Edit:

Я не знаю, почему выше не работает, но мне удалось изменить это просто выполнив:

EditTextPreference namePref = (EditTextPreference) findPreference("namePref"); 
    namePref.setText("the text"); 

Это обновленный вид каждый раз.

ответ

0

Хотя я знаю, что для PreferenceActivities существуют некоторые конструкции, чтобы отслеживать эту информацию самостоятельно, она, похоже, не хорошо документирована. Я обнаружил, что добавление onPreferenceChangeListener к предпочтению позволит вам внести эти изменения, как только будет изменено предпочтение.