0

我不确定为什么我的代码不起作用,按照 android 开发人员指南这应该可以工作。我认为这是因为我没有创建首选项文件,我不知道该怎么做。有人可以看看我是否正确地写了所有东西吗?

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

1 回答 1

2

你必须commit()在同一个编辑器上。像您所做的那样提交另一个对象意味着前一个对象putString()会丢失。这意味着改变

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

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

当然,如果您要编辑的东西不止一件,您可以保留对您的编辑器的引用:

例如:

SharedPreferences.Editor editor = settings.edit();
editor.putString("key1", "value1");
editor.putString("key2", "value2");
editor.commit();
于 2013-02-19T02:46:45.960 回答