Метод putInt SharedPreferences не работает

private boolean rightReviewTiming() {
    int insertKitCnt = sharedPreferences.getInt("insert_kit_cnt",0);
    insertKitCnt++;
    sharedPreferences.edit().putInt("insert_kit_cnt", insertKitCnt);
    sharedPreferences.edit().commit();
    insertKitCnt = sharedPreferences.getInt("insert_kit_cnt", 0);
    Log.d("ehhehe", "rightReviewTiming: " + insertKitCnt);
    if ((insertKitCnt % 11 == 0) && (insertKitCnt % 2 == 0)) {
        return true;
    } else {
        return false;
    }
}

Я хочу обновить ключ insert_kit_cnt. Но его журнал всегда показывает «0». Если вы знаете, где проблема, пожалуйста, дайте мне знать об этом. Я думаю, может быть, insert_kit_cnt commit не работает. Время коммита неправильное?

Попробуйте использовать apply() вместо commit()

Asset Bekbossynov 14.03.2019 11:05
1
1
88
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Сделайте commit или apply в редакторе, в котором вы вносите изменения.

sharedPreferences.edit().putInt("insert_kit_cnt", insertKitCnt).apply();

Вы создаете две ссылки на редактор. Вам нужно использовать только одну ссылку на редактор:

SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("insert_kit_cnt", insertKitCnt);
editor.apply();

Или в однострочном коде вы также можете сделать так:

sharedPreferences.edit().putInt("insert_kit_cnt", insertKitCnt).apply();

Другие вопросы по теме