将SharePrefs值加载到textview中

时间:2016-07-02 18:32:20

标签: java android-studio sharedpreferences

所以我用一个简单的得分保持系统做了一个游戏,似乎高分得到了正确的共享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();
}

3 个答案:

答案 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)方法。

source

更新

在查看堆栈跟踪后,您的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);