SharedPreferences 不会节省价值

SharedPreferences wont save value

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();
        }
    });

生日值保存得很好,但名字没有。为什么?

替换

editor.apply();

editor.commit();

docs

中阅读更多相关信息

试试这个:

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

这是我在我的应用程序中存储值时的做法:

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的代码?

希望对您有所帮助!

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 实例而不是两个。