每次请求 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()
.
我想为 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()
.