2014-10-13 5 views
0

Я бегу:SharedPreferences Int не обновляется после выполнения операции

int value = mPreferences.getInt(key, 0); 
mPreferences.edit().putInt(key, value+1).apply(); 
int newValue = return mPreferences.getInt(key, 0); 

Однако я получаю тот же результат для value и newValue. Обновленный результат появляется только тогда, когда я вызываю getInt() позже в коде. Я думал, что обновления в объекте SharedPreferences с использованием apply() мгновенно будут видны в объекте SharedPreferences. Разве это не так?

ответ

1

Если вы хотите синхронное обновление вы должны использовать

commit() 

http://developer.android.com/reference/android/content/SharedPreferences.Editor.html#commit()

+0

коммит не работаю либо – liarspocker

+0

с фиксацией вы можете проверить, если Данные были успешно записаны на постоянное хранение – JoaoBiriba

+0

Да, в этот случай commit() возвращает true, но get right after возвращает старое значение. – liarspocker

0

Прежде всего commit() & apply() являются почти то же самое, главное различие в том, что apply() быстрее

Я попытался делаю это так же & это сработало для меня Проверьте это:

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); 
    int a = sharedPreferences.getInt("a",0); 
    Toast.makeText(getActivity(), "a = " + a , Toast.LENGTH_SHORT).show(); 
    sharedPreferences.edit().putInt("a", a+1).apply(); 

После проверки XML в данном приложении, я получил a как 1

Смежные вопросы