2013-07-24 12 views
0

У меня есть EditTextPreference, и я не знаю, когда эта строка будет сохранена в файле Shared Preferences.Когда настройки сохраняются в файл?

Если я начинаю с пустой строки и меняю ее на «Привет», когда это обновление сохраняется? Нужно ли сохранять его вручную?

+2

Дайте правильный ответ Joel вместо меня, как Geobits указал ;-) – Darwind

ответ

2

У меня есть EditTextPreference и не знаю, когда он совершает эту строку в общей файл настроек

Если вы посмотрите на документацию EditTextPreference, текст будет сохранен при вызове метода setText(String). Этот метод фиксирует текст в SharedPreferences. Настройки не будут обновляться до тех пор, пока вы не назовете этот метод. Например ...

EditTextPreference mPrefs = ... 

//perform any manipulations on the string, not saved until you call setText() 
String mText = "2"; 
mText += " + 2"; 
mText += " = 4"; 

// saves "2 + 2 = 4" to SharedPreferences 
mPrefs.setText(mText); 
1

Когда вы его совершите, позвонив либо Editor.commit(), либо Editor.apply().

См documentation

+2

Это просто неправильно. Это относится к использованию 'SharedPreferences.Editor', но не имеет никакого отношения к' EditTextPreference'. Ответ Джоэля правильный; когда вы вызываете 'setText()', он сохраняет значение 'SharedPreferences'. – Geobits

+0

Вы правы - извините, я не знаю, как я мог пропустить эту часть вопроса - думаю, я немного быстро ответил - дайте правильный ответ Джоэлю ;-) Однако «за кулисами» 'Editor.commit()' вызывается, когда вы вызываете 'setText (text)' ;-) – Darwind

+0

Это правда! За кулисами эти звонки ведутся. Тем не менее, это немного выходит за рамки его вопроса – Joel

1

Глядя на источник для EditTextPreference.java, строка сохраняется в методе SetText().

Таким образом, после изменения текста он будет передан в файл SharedPreferences.

0

когда и редактировать prefrence вы можете использовать следующий код:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); 


Editor edit = sp.edit(); 
edit.putString("Preference_Label", variable_name); 
edit.commit(); // this commits the edit