我正在使用SharedPrefrences。我在偏好中有多个共享的首选项。我正在循环中将值0更改为n-1,其他值是用户得分。我使用commit()可能存在一些问题,但该值未更新。你能建议我该怎么办?
SharedPreferences pref = getApplicationContext().getSharedPreferences("Scorepref", 0);
SharedPreferences.Editor editor = pref.edit();
for (int i = 0; i < mQuestionBank.length; i++) {
editor.putBoolean(Integer.toString(i), false);
editor.commit();
}
mAnswered.setText( "0/" +Integer.toString(mQuestionBank.length));
mScoreval = 0;
mAnswered_count=0;
editor.putInt("User_score", 0);
editor.commit();
mScore.setText("0");
答案 0 :(得分:1)
您没有向我们展示代码,您如何尝试从prefs
读取数据,但是无论如何,如果您无法通过prefs.getBoolean
读取数据,则可以在pref.getAll()
上进行迭代,例如:
if (pref.getAll() != null) {
for (int i = 0; i < mQuestionBank.size(); i++) {
if (pref.getAll().get(String.valueOf(i)) instanceof Boolean) {
final Boolean yourSavedBoolean = (Boolean) pref.getAll().get(i);
}
}
}
或者,如果您只需要一个值,则:
if (pref.getAll() != null) {
Boolean yourSavedBoolean = false;
if (pref.getAll().get("0") != null && pref.getAll().get("0") instanceof Boolean) {
yourSavedBoolean = (Boolean) pref.getAll().get("0");
}
}