获得此代码,该代码基本上根据用户在测验中的距离更新我的文本视图,该测验存储在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;
}
答案 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更改。