2015-05-07 80 views
1
final SharedPreferences sp = getSharedPreferences("birthday", 0); 
final SharedPreferences sp2 = getSharedPreferences("name", 0); 

save.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      SharedPreferences.Editor editor = sp.edit(); 
      editor.putString("birthday", birthday.getText().toString()); 
      editor.apply(); 
      SharedPreferences.Editor editor2 = sp2.edit(); 
      editor2.putString("name", name.getText().toString()); 
      editor2.apply(); 
      Toast.makeText(SettingsActivity.this, "Changes saved.", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

生日值保存得很好,但名称没有。为什么?SharedPreferences不会保存值

+1

为什么你使用SharedPreference的两个不同实例? – Blackbelt

+0

您能否确认您尝试存储的值实际存在且不为空? – Eenvincible

+0

同意Blackbelt。您应该使用SharedPreferences的一个实例和一个编辑器。 – Knossos

回答

1
final SharedPreferences sp = getSharedPreferences("data", 0); 

    save.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      SharedPreferences.Editor editor = sp.edit(); 
      editor.putString("birthday", birthday.getText().toString()); 
      editor.putString("name", name.getText().toString()); 
      editor.commit(); 
      Toast.makeText(SettingsActivity.this, "Changes saved.", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

修正了这个问题!只能使用SharedPreferences的一个实例而不是两个。

0

更换

editor.apply(); 

editor.commit(); 

了解更多关于它的docs

+0

我确定申请()建议 – Eenvincible

+0

申请被推荐。应用程序异步工作。 http://developer.android.com/reference/android/content/SharedPreferences.Editor.html#apply() – Knossos

+0

@Eenvincible为什么这个答案被downvoted ..这也是正确的答案.. – Lal

2

试试这个:

SharedPreferences.Editor editor = sp.edit(); 
      editor.putString("birthday", birthday.getText().toString()); 
      editor.putString("name", name.getText().toString()); 
editor.commit(); 
0

这是我是如何做到的存储值时,在我的应用程序:

save.setOnClickListener(new View.OnClickListener(){ 

    @Override 
    public void onClick(View v){ 

     SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(YourActivity.this); 
     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putString("birthday", birthday.getText().toString()); 
     editor.putString("name", name.getText().toString()); 
     editor.apply(); 
    } 
}); 

我保存到首选项时遇到的问题是我如何实际获得SharedPreferences实例;

请您分享您用于实例化sp的代码吗?

我希望这有助于!

+0

SharedPreferences sp = getSharedPreferences(“birthday”,0); SharedPreferences sp2 = getSharedPreferences(“name”,0); – Alex

+0

试试这个:PreferenceManager.getDefaultSharedPreferences(YourActivity.this); – Eenvincible