Получение java.lang.String не может быть приведено к java.lang.Integer при получении значения из SharedPreferences - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь использовать SharedPreferences для хранения некоторых значений и извлечения их при открытии приложения, но у меня возникают проблемы с получением некоторых значений int.

Я пытался преобразовать значение в строку и затем использовать Integer.ParseInt, чтобы получить значение, но я все еще получаю ошибку.

Здесь мое значение должно быть сохранено:

void putP1Index(int index) {
    SharedPreferences.Editor mEditor = mPrefs.edit();
    mEditor.putInt(keyP1Index, index);
    mEditor.apply();
}

void putP2Index(int index) {
    SharedPreferences.Editor mEditor = mPrefs.edit();
    mEditor.putInt(keyP2Index, index);
    mEditor.apply();
}

Они сохранены из другогокласс:

private MainGame mainGame;
private SavedValues savedValues;


ScoreSetter(MainGame mainGame) {
    this.mainGame = mainGame;
    savedValues = new SavedValues(mainGame);
}

void setScore(who) {
switch (who) {
        case 1:
            ++indexP1;
            savedValues.putP1Index(indexP1);
//Some code...
        case 2:
            ++indexP2;
            savedValues.putP2Index(indexP2);
//Some code...
}
}

И я пытаюсь получить его так:

int getP1Index() {
    return mPrefs.getInt(keyP1Index, 0);
}

int getP2Index() {
    return mPrefs.getInt(keyP2Index, 0);
}

, вызывая их из другого класса:

void getSavedValues() {
    indexP1 = savedValues.getP1Index();
    indexP2 = savedValues.getP2Index();
}

В методе getSavedValues ​​я получаю сообщение об ошибке

java.lang.RuntimeException: невозможно запустить действие ComponentInfo {...}: java.lang.ClassCastException: java.lang.String не может быть приведеноto java.lang.Integer

Что я не понимаю, так это тот факт, что я сохраняю значение как int и пытаюсь получить их таким же образом.

Кроме того, у меня есть аналогичный метод, но с логическими значениями , и он работает просто отлично.

1 Ответ

0 голосов
/ 16 февраля 2019

Мне удалось решить проблему.В коде не было ничего плохого, кроме значения, которое было написано в предыдущей версии приложения.

После очистки данных приложения, а также из-за недействительности и очистки кэша в Android Studio проблема исчезла.

...