SavedPreferences无法保存

时间:2014-12-01 07:14:25

标签: android sharedpreferences onpause

我正在玩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的印刷品。 我认为什么都没有保存。

但为什么会这样?

4 个答案:

答案 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", "");

  }