从SharedPreferences检索值时,无法将java.lang.String强制转换为java.lang.Integer

安迪:

我正在尝试使用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无法转换为java.lang.Integer

我不明白的是我将值保存为int并尝试以相同的方式检索它们的事实。

另外,我也有类似的方法,但是使用布尔值,它工作得很好。

安迪:

我设法解决了这个问题。代码没有什么错,但是它的值是在该应用的先前版本中编写的。

清除应用程序数据并在Android Studio中禁用并清除缓存后,问题消失了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

sharedPref.getInt:无法将java.lang.String强制转换为java.lang.Integer

ClassCastException:无法将java.lang.Object强制转换为java.lang.Integer

无法将java.lang.Long强制转换为java.lang.Integer

获取ClassCastException:如果不进行强制转换,则无法将java.lang.Integer强制转换为java.lang.String错误

java.lang.ClassCastException:无法将java.lang.Integer强制转换为java.lang.Double

休眠:java.lang.ClassCastException:无法将java.lang.Integer强制转换为java.lang.Double

java.lang.Integer中不能被强制转换为java.lang.Long中

无法将类java.lang.Integer转换为类java.lang.String

Hibernate HQL强制转换java.lang.ClassCastException:无法将java.lang.Integer强制转换为java.lang.Long

如何修复:java.lang.ClassCastException:无法将java.util.ArrayList强制转换为java.lang.Integer

Android HashMap java.lang.ClassCastException:无法将java.lang.Integer强制转换为java.util.Map $ Entry

java.lang.ClassCastException:无法将java.util.Arrays $ ArrayList强制转换为java.lang.Integer

无法将java.math.BigInteger强制转换为java.lang.Integer

SDN4 java.lang.ClassCastException:使用AttributeConverter时无法将java.lang.Integer强制转换为java.lang.Long

获取Shared Preference值时,不能将ClassCastException java.lang.Integer强制转换为java.lang.Long

服务器响应“无法将java.lang.Integer强制转换为java.lang.Double”

Srping /休眠:无法将spring.entity.Downloads强制转换为java.lang.Integer

@Value->无法将类型“ java.lang.String”的值转换为所需的类型“ java.lang.Integer”

Spring MVC-无法将类型'java.lang.String'的属性值转换为所需的类型'java.lang.Integer'

java.lang.Integer无法转换为java.lang.String

Hibernate HQL强制转换:java.lang.String不能强制转换为java.lang.Enum

在Java中进行JSON加载:java.lang.ClassCastException:无法将java.lang.Long强制转换为java.lang.Integer

java.lang.ClassCastException:无法在Java 1.6中将java.lang.Long强制转换为java.lang.Integer

java.lang.ClassCastException:java.lang.String 无法在 tableau 中转换为 java.lang.Integer?

Kotlin:java.lang.ClassCastException:java.lang.Long无法转换为java.lang.Integer

java.lang.Integer 类型的值无法转换为 JSONObject

将方法传递给Controller:java.lang.Long不能强制转换为java.lang.Integer

java.lang.ClassCastException:无法将Z强制转换为java.lang.String

ClassCastException:无法将java.lang.Object []强制转换为java.lang.String [] android