我正在尝试将一些字符串存储在共享首选项文件中,然后在另一个活动中检索它们,除了它似乎没有工作。关于我出错的地方的任何指导都将非常感激。非常感谢。
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);
}
答案 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对象,以访问此活动专用的偏好设置。