共享首选项无法正常工作

时间:2013-08-04 18:47:53

标签: android sharedpreferences

我正在尝试将一些字符串存储在共享首选项文件中,然后在另一个活动中检索它们,除了它似乎没有工作。关于我出错的地方的任何指导都将非常感激。非常感谢。

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

1 个答案:

答案 0 :(得分:3)

使用您拥有的代码,您可以限制共享偏好对活动(上下文)级别的访问。

活动MainActivity中保存的值将无法在活动Progress中使用,因为您使用的是getPreferences(MODE_PRIVATE);

将此更改为

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);

SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

的getPreferences:

public SharedPreferences getPreferences (int mode)

检索SharedPreferences对象,以访问此活动专用的偏好设置。