所以我用一个简单的得分保持系统做了一个游戏,似乎高分得到了正确的共享prefs,但是当试图将高分加载到活动时创建应用程序崩溃。这是我的代码。
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
int score = sharedPref.getInt("SCORE", 0);
String score2 = Integer.toString(score);
text10.setText(score2);
不确定我做错了什么,所以任何建议都会很棒!
这是我的保存评分代码
private void savePref(String key, int value) {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor edit = sp.edit();
edit.putInt(key, value);
edit.apply();
}
答案 0 :(得分:0)
使用名称和模式正确保存SharedPreferences
SharedPreferences sharedPreferences = context.getSharedPreferences("DATA",Context.MODE_PRIVATE);
答案 1 :(得分:0)
我认为这种情况正在发生,因为您使用的方法getPreferences(PREFERENCE_MODE_PRIVATE)
返回Activity's class name
所保存的偏好设置,如here所述:
检索SharedPreferences对象以访问此活动专用的首选项。这只是通过将此活动的类名称作为首选项名称来调用底层的getSharedPreferences(String,int)方法。
因此,当您在SomeActivity
中保存首选项时,它会以名称"SomeActivity"
但是当你在这个活动中获得prefs时,它会返回在此活动的类名下保存的首选项。
因此,您应该使用具有相同名称的getSharedPreferences (String name, int mode)方法。
更新
在查看堆栈跟踪后,您的TextView
对象text10
似乎为null
,请对其进行初始化,问题将得到解决。
答案 2 :(得分:0)
从您共享的日志中,很明显您没有正确获取TextView。假设您已设置布局,请执行以下操作:
text10 = (TextView) findViewById(R.id.your_textview_id);
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
int score = sharedPref.getInt("SCORE", 0);
String score2 = Integer.toString(score);
text10.setText(score2);