【发布时间】:2017-08-29 06:03:26
【问题描述】:
我想在单击按钮时将用户输入保存到 SharedPreferences,以便当用户再次启动活动时,用户输入设置为 EditText 和 TextView。我已经创建了一个 sharedPreferences 文件,我在之前的活动中保存了一些文本。 我想用我创建的这个新活动的另一个详细信息更新 SharedPreferences 文件。
这是用于创建和保存到 SharedPreferences 的代码
private SharedPreferences prefs;
public static final String PREF_FILE_NAME = "AuthUser";
prefs = this.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);
txtDate = (TextView) findViewById(R.id.txtDate);
addIdButton = (Button) findViewById(R.id.btnAddId);
addIdButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
expiryDate = txtDate.getText().toString();
edtIdNumber = (EditText) findViewById(R.id.edtIdNumber);
idNumber = edtIdNumber.getText().toString();
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("idType", idType);
editor.putString("idNumber", idNumber);
editor.putString("expiryDate", expiryDate);
editor.apply();
}
});
这是我将共享首选项中的值设置为 EditText 和 TextView 的代码
@Override
public void onStart(){
super.onStart();
File f = new File(PREF_FILE_NAME);
if (f.exists()){
idType = prefs.getInt("idType", 0);
idNumber = prefs.getString("idNumber", "");
expiryDate = prefs.getString("expiryDate", "");
edtIdNumber = (EditText) findViewById(R.id.edtIdNumber);
txtDate = (TextView) findViewById(R.id.txtDate);
txtDate.setText(expiryDate);
edtIdNumber.setText(idNumber);
edtIdNumber.setText(idNumber);
txtDate.setText(expiryDate);
}
}
【问题讨论】:
-
在 OnCreate 方法中使用 onStart() 代码.. 因为你可以在 oncreate 方法执行后找到 edittext....
-
代码看起来不错。你面临的问题是什么。除了将文本设置为
edtIdNumber2 次之外,这是一个复制粘贴错误。 -
@PCGALIANDROID 问题是值没有保存到 sharedPreference 文件中
-
我认为您在写入 SharedPreferences 时缺少“提交”。尝试添加 editor.commit();看看会发生什么
标签: android sharedpreferences android-sharedpreferences