每次请求 SharedPreference 时应用程序都会崩溃

App crashes every time a SharedPreference gets requested

我想为 2 个活动存储一个 int,第一个被加载,另一个被存储(加载以比较它是否仍然相同)。

Activity答:

textView = (TextView) findViewById(R.id.score);

SharedPreferences preferences = getSharedPreferences("Pref", 0);
int score = preferences.getInt("Highscore", 0);
textView.setText(Integer.toString(score));

Activity B(在onPause()部分):

SharedPreferences preferences = getSharedPreferences("Pref", 0);
int pref_score = preferences.getInt("Highscore", 0);

if (new_score > pref_score) {
    SharedPreferences.Editor editor = preferences.edit();
    editor.putInt("Highscore", gameView.getScore());
    editor.commit();
}

当我 运行 应用程序时,它会立即崩溃。 Activity一开始就调用了A,可能是什么都没有存储到现在的问题? 如果我在 Activity A 中将其注释掉,它会一直工作,直到 B 中的 onPause() 函数被调用(主页按钮)。

编辑 全部更改为 int,仍然崩溃 logcat

您正在使用 "putString" 和 "getInt"。
所以你将它保存为一个字符串,但尝试将它作为一个整数来获取。因此它尝试将 String 转换为 Int,从而引发 ClassCastException。

你必须保存和获取它作为相同的类型。

Activity A 中使用 preferences.getInt(),而在 Activity B 中使用 preferences.edit().putString()

修复此问题后,您将必须 uninstall/reinstall 您的应用程序或覆盖 SharedPreference 中包含的 String 值,否则当您尝试获取时它仍然会崩溃通过 getInt().