Java 每次请求SharedReference时,应用程序都会崩溃

Java 每次请求SharedReference时,应用程序都会崩溃,java,android,sharedpreferences,android-sharedpreferences,Java,Android,Sharedpreferences,Android Sharedpreferences,我想为2个活动存储一个int,在第一个活动中加载,在另一个活动中存储(如果仍然相同,则加载以进行比较) 活动A: textView = (TextView) findViewById(R.id.score); SharedPreferences preferences = getSharedPreferences("Pref", 0); int score = preferences.getInt("Highscore", 0); textView.setText(Integer.toStri

我想为2个活动存储一个int,在第一个活动中加载,在另一个活动中存储(如果仍然相同,则加载以进行比较)

活动A:

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

SharedPreferences preferences = getSharedPreferences("Pref", 0);
int score = preferences.getInt("Highscore", 0);
textView.setText(Integer.toString(score));
活动B(在onPause()部分中):

当我运行应用程序时,它会立即崩溃。首先调用活动A,到目前为止没有存储任何内容可能是个问题? 如果我在活动A中注释掉它,它将一直工作,直到调用B中的onPause()函数(Home按钮)

编辑 将all更改为int,仍然崩溃

您正在使用“putString”和“getInt”。
因此,您可以将其保存为字符串,但请尝试将其获取为整数。因此它尝试将字符串转换为Int,从而转换为ClassCastException


您必须将其保存并获取为同一类型。

活动A中使用
首选项.getInt()
,而在
活动B中使用
首选项.edit().putString()


修复此问题后,您必须卸载/重新安装应用程序或覆盖
SharedReference
中包含的
字符串
值,否则当您试图通过
getInt()

获取它时,它仍将崩溃。logcat消息是什么?@Omarafak也许这行代码很有趣?10-01 22:48:34.928 513-513/? I/Gobi:vendor/qcom/property/RIDL/RIDLClient/MainCore.cpp:1324:无法获取TransState,r你确定这就是崩溃发生的地方吗?如果我对部分进行注释,它会很好地分叉,在模拟器中以及在我的电话中我正在谈论logcat消息。你应该寻找类似“异常”的东西修复了那个,它仍然是。第31行(其中转换错误为):int score=preferences.getInt(“Highscore”,0);从字面上卸载应用程序并重新安装,这将删除您保存的任何剩余SharedReference(您可能仍然在“Highscore”字段中保存了一个字符串),请进行upvote并接受我的答案,如果它对您有帮助:)
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();
}