2

我正在尝试将一些字符串存储在共享首选项文件中,然后在另一个活动中检索它们,但它似乎不起作用。任何关于我哪里出错的指导将不胜感激。非常感谢。

public void save(View view) {
    SavePreferences("name", nameS);
    SavePreferences("current", currentS);
    SavePreferences("goal", goalS);
    SavePreferences("CurrentBmi", cBmiS);
    SavePreferences("goalBmi", gBmiS);
    Toast.makeText(this, "profile Saved", Toast.LENGTH_SHORT).show();
    startActivity(new Intent(this, MainActivity.class));

}

private void SavePreferences(String key, String value) {
    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString(key, value);
    editor.commit();
}






 public class Progress extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_progress);
    SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
    String test = sharedPreferences.getString("name", "");
    String test2 = sharedPreferences.getString("current", "");
    TextView testy = (TextView) findViewById(R.id.textView1);
    testy.setText(test);
    TextView testz = (TextView) findViewById(R.id.test2);
    testz.setText(test2);
}
4

1 回答 1

4

使用您拥有的代码,您可以将 sharedpreferences 的访问权限限制为活动(上下文)级别。

活动活动中保存的值将在活动MainActivity中不可用,Progress因为您正在使用getPreferences(MODE_PRIVATE);

将此更改为

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);

或者

SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

获取首选项:

public SharedPreferences getPreferences (int mode)

检索一个 SharedPreferences 对象以访问此活动专用的首选项。

于 2013-08-04T18:51:50.247 回答