Android 共享首选项无法正常工作

Android 共享首选项无法正常工作,android,sharedpreferences,Android,Sharedpreferences,我试图将一些字符串存储在共享首选项文件中,然后在另一个活动中检索它们,除非它似乎不起作用。任何关于我哪里出错的指导都将不胜感激。非常感谢 public void save(View view) { SavePreferences("name", nameS); SavePreferences("current", currentS); SavePreferences("goal", goalS); SavePreferences("CurrentBmi", cBm

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

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

使用现有代码,您将共享引用的访问限制为activitycontext级别

由于您使用的是getPreferencesMODE_PRIVATE,活动MainActivity中保存的值在活动进度中不可用

将此更改为

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);

getPreferences:

public SharedPreferences getPreferences (int mode)

检索SharedReferences对象以访问此活动专用的首选项

使用您现有的代码,您将共享引用的访问限制在activitycontext级别

由于您使用的是getPreferencesMODE_PRIVATE,活动MainActivity中保存的值在活动进度中不可用

将此更改为

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);

getPreferences:

public SharedPreferences getPreferences (int mode)

检索SharedReferences对象以访问此活动专用的首选项

第一点很有道理,谢谢。不过,我不确定使用getPreferences是什么意思。更改保存后,我的检索方法是否会失效?我刚刚从文档中发布了getPreferences的定义,其中说它检索了一个SharedReferences对象,用于访问此活动专用的首选项。第一点非常有意义,谢谢。不过,我不确定使用getPreferences是什么意思。在更改保存之后,我的检索方法会不会不起作用?我刚刚发布了文档中getPreferences的定义,它说它检索一个SharedReferences对象,用于访问此活动专用的首选项。