Android SharedPref编辑无法正常工作

时间:2014-02-03 02:14:25

标签: android sharedpreferences

获得此代码,该代码基本上根据用户在测验中的距离更新我的文本视图,该测验存储在sharedPrefs中。但是当输入正确的答案时,prefs不会更新。 commit()是否需要太长的时间来设置prefs,因此活动在更新sharedPrefs之前调用方法setText()或者我做错了什么?

private void setText() {
    SharedPreferences score = this.getSharedPreferences("football", MODE_PRIVATE);
    questionNumber = score.getInt("football", 0);
    question.setText(questions.get(questionNumber).get(0));
}

public void onClick(View v) {
switch (v.getId()) {
    case R.id.bCheckAnswer:
        if (questions.get(questionNumber).contains(etAnswer.getText().toString())) {
            Integer newQ = questionNumber += 1;
            SharedPreferences change = this.getPreferences(Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = change.edit();
            editor.putInt("football", newQ);
            editor.commit();
            setText();
        }else{
            question.setText("error occured");
        }
        break;
}

2 个答案:

答案 0 :(得分:4)

在设置和获取时,您不会以相同的方式打开SharedPreference。

改变这个:

SharedPreferences change = this.getPreferences(Context.MODE_PRIVATE);

到此:

SharedPreferences change = this.getSharedPreferences("football", MODE_PRIVATE);

注意差异:

  • getPreferences vs getSharedPreferences
  • 您没有将首选项引用作为"football"

答案 1 :(得分:0)

你确定prefs没有得到更新,还是只是你的textview没有得到更新?如果在您的Activity中完成此操作,则不应在Activity中更改布局(文本视图)。您应该使用Handler来进行UI更改。