Android SharedPref编辑不工作

Android SharedPref编辑不工作,android,sharedpreferences,Android,Sharedpreferences,得到了这段代码,它基本上会根据用户在测验中的距离来更新我的文本视图,这段代码存储在sharedPrefs中。但是当输入正确答案时,prefs不会更新。commit()是否需要太长的时间来设置pref,因此活动会在更新SharedPref之前调用方法setText(),或者我做错了什么 private void setText() { SharedPreferences score = this.getSharedPreferences("football", MODE_PRIVATE);

得到了这段代码,它基本上会根据用户在测验中的距离来更新我的文本视图,这段代码存储在sharedPrefs中。但是当输入正确答案时,prefs不会更新。commit()是否需要太长的时间来设置pref,因此活动会在更新SharedPref之前调用方法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;
}

您确定prefs没有更新,还是只是您的textview没有更新?如果在活动中执行此操作,则不应在活动中更改布局(文本视图)。您应该使用处理程序进行UI更改

您确定prefs没有更新,还是只是您的textview没有更新?如果在活动中执行此操作,则不应在活动中更改布局(文本视图)。您应该使用处理程序进行UI更改

设置和获取时,打开SharedReference的方式不同

更改此项:

SharedPreferences change = this.getPreferences(Context.MODE_PRIVATE);
为此:

SharedPreferences change = this.getSharedPreferences("football", MODE_PRIVATE);
请注意区别:

  • getPreferences
    vs
    getSharedReferences
  • 您没有将首选项引用作为
    “football”

设置和获取时,您打开SharedReference的方式不同

更改此项:

SharedPreferences change = this.getPreferences(Context.MODE_PRIVATE);
为此:

SharedPreferences change = this.getSharedPreferences("football", MODE_PRIVATE);
请注意区别:

  • getPreferences
    vs
    getSharedReferences
  • 您没有将首选项引用作为
    “football”

为什么不第二次打开“football”共享首选项对象?mike yaworski的回答应该可以解决您的问题。只是解释一下-首选项存储在XML文件中。当您调用
getSharedReferences(“football”,MODE_PRIVATE)时
它使用一个名为
footbal.xml
(需要时创建)的文件。
getPreference(…)
方法是一种方便的方法,它只需调用
getSharedReferences(字符串名称,int模式)
并将
活动
类名作为'name'参数传递,例如,
MyActivity
。为什么不打开“football”第二次共享偏好对象?mike yaworski的答案应该可以解决您的问题。只是解释一下-首选项存储在XML文件中。当您调用
getSharedReferences(“football”,MODE_PRIVATE)时
它使用一个名为
footbal.xml
(需要时创建)的文件。
getPreference(…)
方法是一种方便的方法,它只需调用
getSharedReferences(字符串名称,int模式)
,并将
活动
类名作为“name”参数传递,例如,
MyActivity