У меня очень странная проблема.Android - SharedPreferences - не могу получить мое значение
Я использую пары ключ/значение, чтобы сохранить данные приложения. И все отлично! Я могу сохранить и получить строковые значения и логические значения.
Единственный тип значения, я не могу получить это Integer
Позвольте мне описать ситуацию:
В одной деятельности, я сохранить пару ключей/значение таким образом:
addElement(getApplicationContext(), "all_tasks", Integer.parseInt(allTasks.getText().toString()));
Я использую этот метод из моего файла KeyValueStorageHelper.java:
/* Записать новую целочисленную пару */
public static void addElement(Context context, String key, int value) {
ContextWrapper contextWrapper = new ContextWrapper(context);
SharedPreferences.Editor sharedPreferences = contextWrapper.getSharedPreferences("MentalCalculationSaveData", ContextWrapper.MODE_PRIVATE).edit();
sharedPreferences.putInt(key, value);
sharedPreferences.apply();
}
После этого, в другой деятельности, я пытаюсь сделать это, и вот странное приходит:
if (isKeyExists(getApplicationContext(), "all_tasks"))
Toast.makeText(getApplicationContext(), getInt(getApplicationContext(), "all_tasks"),Toast.LENGTH_LONG).show();
Этот код выдает «ResouceNotFound Exception». Окей. Но это странно. Если такого ресурса нет, почему блок if-else возвращает true?
После этого я предположил, что, возможно, это не целая пара ключ/значение.
Я попытался это:
Toast.makeText(getApplicationContext(), (int)getFloat(getApplicationContext(), "all_tasks"),Toast.LENGTH_LONG).show();
И againg бросает исключение:
java.lang.Integer cannot be cast to java.lang.Float
Так что случилось? Как мое значение может быть Integer и генерирует исключение, когда я пытаюсь его получить?
Где находится ResourceNotFoundException? Я думаю, что ваш код не выполняется внутри блока if. Исключение выбрасывается при условии if –