Я пытаюсь использовать 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 и пытаюсь получить их таким же образом.
Кроме того, у меня есть аналогичный метод, но с логическими значениями , и он работает просто отлично.