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