SharedPreferences: Почему моя ценность не перезаписывается? - PullRequest
0 голосов
/ 26 января 2020

Я пытаюсь перезаписать значение в SharedPreferences. Это логическое значение, но оно как-то глючит или я что-то не так делаю. Посмотрите на этот небольшой фрагмент кода:

sharedPref.edit().remove("bool1");
sharedPref.edit().putBoolean("bool1", true);
sharedPref.edit().commit();
Log.v("TEST" ,"" + sharedPref.getBoolean("bool1", true));

Вывод будет:

2020-01-26 19:37:48.244 29886-29886/de.rich.richquotes.richquotes V/TEST: false

Я не смог найти ответ на этот вопрос в inte rnet. Кто-нибудь знает?

1 Ответ

2 голосов
/ 26 января 2020

Каждый раз, когда вы вызываете sharedPref.edit(), он создает новый объект SharedPreferences.Editor, который имеет собственную карту пар ключ-значение, которую вы затем можете commit() или apply(), чтобы сохранить их. Когда вы снова вызовете edit(), он создаст новый объект, в котором не будет изменений, которые вы сделали ранее. Вместо этого вы можете сделать что-то вроде этого (все эти методы возвращают себя, чтобы вы могли связать их в цепочку)

sharedPref.edit().putBoolean("bool1", true).commit();

Кроме того, если вам все равно, был ли коммит успешным, вы должны использовать apply(). Он асинхронный, но сразу вносит изменения и в оперативную память, поэтому вы не должны заметить никакой разницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...