В активити есть два элемента CheckBox, значение которых я сохраняю в SharedPreferences. Возникла проблема - при изменении одного из них, изменяется записанное значение во втором. Т.е. я захожу в активити, ставлю галочку в первый CheckBox, выхожу назад, захожу опять в активити и галочка уже стоит в обоих CheckBox. Ниже приведен код сохранения значения и проверки значения при открытии активити. Из-за чего может проявиться такая ошибка?
Сохранение:
boldCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked) typeface += Typeface.BOLD;
else typeface -= Typeface.BOLD;
tv.setTypeface(null, typeface);
SharedPreferences.Editor editor = mSettings.edit();
editor.putBoolean(APP_PREFERENCES_BOLD, isChecked);
editor.apply();
Log.d(TAG, "bold write " + isChecked);
}
});
italicCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked) typeface += Typeface.ITALIC;
else typeface -= Typeface.ITALIC;
tv.setTypeface(null, typeface);
SharedPreferences.Editor editor = mSettings.edit();
editor.putBoolean(APP_PREFERENCES_ITALIC, isChecked);
editor.apply();
Log.d(TAG, "italic write " + isChecked);
}
});
}
Проверка значений при открытии активити:
if (mSettings.contains(APP_PREFERENCES_BOLD) | mSettings.contains(APP_PREFERENCES_ITALIC)) {
if (mSettings.getBoolean(APP_PREFERENCES_BOLD, false)) {
Log.d(TAG, "APP_PREFERENCES_BOLD == " + mSettings.getBoolean(APP_PREFERENCES_BOLD, false));
typeface += Typeface.BOLD;
boldCheckBox.setChecked(true);
}
if (mSettings.getBoolean(APP_PREFERENCES_ITALIC, false)) {
Log.d(TAG, "APP_PREFERENCES_ITALIC == " + mSettings.getBoolean(APP_PREFERENCES_ITALIC, false));
typeface += Typeface.ITALIC;
italicCheckBox.setChecked(true);
}
tv.setTypeface(null, typeface);
}
Собираюсь выложить приложение на PlayMarket, с последующим его обновлением