У меня возникла проблема при восстановлении «только что сохраненного» предпочтения. Вот упрощенный сценарий и соответствующий кодAndroid SharedPreference не сохраняется
Фрагмент # 1
private SharedPreferences mPreferences
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
mPreferences = getActivity()
.getApplicationContext()
.getSharedPreferences(PREF_FILENAME, Context.MODE_PRIVATE);
...
}
private void someAction(String value){
mPreferences
.edit()
.putString(MY_KEY, value)
.commit();
mBus.sendEvent(someEvent); // -->
}
Фрагмент # 2
private SharedPreferences mPreferences
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
mPreferences = getActivity()
.getApplicationContext()
.getSharedPreferences(PREF_FILENAME, Context.MODE_PRIVATE);
mBus.register(this);
...
}
private void onSomeEvent(SomeEvent event){
String value = mPreferences.getString(MY_KEY, null);
// ///////
// value is null !!! whats going on?
}
1) Оба фрагмента добавляют к активности по методу Activity.onCreate
и фрагментов
2) Фрагмент # 1 хранит SharedPreference и отправляет событие шины в Фрагмент # 2
3) Фрагмент # 2 ловит событие шины, и извлекает то же предпочтение, хранящееся на 2)
4) Значение Предпочтения нуля, предпочтение не хранятся на/данных/данные // shared_preferences/прив-файл. xml
Примечание: не может отправить value
на мероприятие автобуса, оно должно пройти через SharedPreference
по другим причинам.
Что мне не хватает? Почему нет предпочтительного выбора после сохранения?
Благодаря
Вы уверены, что фиксация SharedPrefs прошла успешно? –
Ну, другие настройки хранятся правильно. Я попытался использовать commit() и apply() и не работал. Я проверю результат операции фиксации на всякий случай. –
Убедитесь, что 'PREF_FILENAME' - это то же самое. –