我正在玩Android的SharedPreferences。
请参阅我的代码:
@Override
public void onPause() {
super.onPause();
SharedPreferences prefs = this.getSharedPreferences(
"com.example.app", Context.MODE_PRIVATE);
for (int i = 0; i<meds.size(); i++){
prefs.edit().putString(String.valueOf(i), meds.get(i));
System.out.println(meds.get(i));
String str = prefs.getString("0", "");
System.out.println(str);
System.out.println(i);
}
prefs.edit().commit();
}
现在我得到所有的印刷品,除了应该印刷str的印刷品。 我认为什么都没有保存。
但为什么会这样?
答案 0 :(得分:3)
投放后提交。
@Override
public void onPause() {
super.onPause();
SharedPreferences prefs = this.getSharedPreferences(
"com.example.app", Context.MODE_PRIVATE);
for (int i = 0; i<meds.size(); i++){
prefs.edit().putString(String.valueOf(i), meds.get(i)).commit();
System.out.println(meds.get(i));
String str = prefs.getString("0", "");
System.out.println(str);
System.out.println(i);
}
答案 1 :(得分:3)
在Preferences
@Override
public void onPause() {
super.onPause();
SharedPreferences prefs = this.getSharedPreferences(
"com.example.app", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
for (int i = 0; i<meds.size(); i++){
editor.putString(String.valueOf(i), meds.get(i));
System.out.println(meds.get(i));
String str = prefs.getString("0", "");
System.out.println(str);
System.out.println(i);
}
editor.commit();
}
答案 2 :(得分:1)
请注意prefs.edit()
会返回共享偏好的新编辑器。
如果您执行prefs.edit().commit();
,则提交将在新编辑器对象上运行。您必须存储对编辑器的引用:
@Override
public void onPause() {
super.onPause();
SharedPreferences prefs = this.getSharedPreferences(
"com.example.app", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
for (int i = 0; i<meds.size(); i++){
editor.putString(String.valueOf(i), meds.get(i));
System.out.println(meds.get(i));
String str = prefs.getString("0", "");
System.out.println(str);
System.out.println(i);
}
editor.commit();
}
否则不会保存任何内容。
答案 3 :(得分:-1)
尝试这样,
@Override
public void onPause() {
super.onPause();
SharedPreferences prefs = this.getSharedPreferences(
"com.example.app", Context.MODE_PRIVATE);
for (int i = 0; i<meds.size(); i++){
prefs.edit().putString(String.valueOf(i), meds.get(i));
System.out.println(meds.get(i));
System.out.println(str);
System.out.println(i);
}
prefs.edit().commit();
String str = prefs.getString("0", "");
}