Android SharedPref编辑不工作
得到了这段代码,它基本上会根据用户在测验中的距离来更新我的文本视图,这段代码存储在sharedPrefs中。但是当输入正确答案时,prefs不会更新。commit()是否需要太长的时间来设置pref,因此活动会在更新SharedPref之前调用方法setText(),或者我做错了什么Android SharedPref编辑不工作,android,sharedpreferences,Android,Sharedpreferences,得到了这段代码,它基本上会根据用户在测验中的距离来更新我的文本视图,这段代码存储在sharedPrefs中。但是当输入正确答案时,prefs不会更新。commit()是否需要太长的时间来设置pref,因此活动会在更新SharedPref之前调用方法setText(),或者我做错了什么 private void setText() { SharedPreferences score = this.getSharedPreferences("football", MODE_PRIVATE);
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);
请注意区别:
vsgetPreferences
getSharedReferences
- 您没有将首选项引用作为
“football”
SharedPreferences change = this.getPreferences(Context.MODE_PRIVATE);
为此:
SharedPreferences change = this.getSharedPreferences("football", MODE_PRIVATE);
请注意区别:
vsgetPreferences
getSharedReferences
- 您没有将首选项引用作为
“football”
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
。