简体   繁体   English

Android SharedPreferences

[英]Android SharedPreferences

I am not sure why my code isn't working, following the android developer guide this should work. 我不确定为什么我的代码不起作用,遵循Android开发人员指南这应该工作。 I assume that it is because I don't have a preferences file created, I am not sure how to go about that. 我认为这是因为我没有创建首选项文件,我不知道如何去做。 Could someone take a look and see if I have written everything correctly? 有人可以看一看,看看我是否写得正确吗?

public static final String PREFS_NAME = "TestPrefs";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void Save(View v){
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
    final EditText s = (EditText) findViewById(R.id.editText1);
    settings.edit().putString("TBox1", s.getText().toString());
    settings.edit().commit();
}

public void Open(View v){
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
    final EditText s = (EditText) findViewById(R.id.editText1);
    String newS = settings.getString("TBox1", "");
    s.setText(newS);
}

You have to commit() on the same Editor. 你必须在同一个编辑器上commit() Commiting on another object as you have done means that the previous putString() gets lost. 像你所做的那样提交另一个对象意味着先前的putString()会丢失。 This means change 这意味着改变

settings.edit().putString("TBox1", s.getText().toString());
settings.edit().commit();

to

settings.edit().putString("TBox1", s.getText().toString()).commit();

Of course, if you have more than one thing to edit, you can keep a reference to your editor: 当然,如果您要编辑多个内容,可以保留对编辑器的引用:

Eg: 例如:

SharedPreferences.Editor editor = settings.edit();
editor.putString("key1", "value1");
editor.putString("key2", "value2");
editor.commit();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM