//---用于保存text到SharedPreferences中
private void saveProgressText() {
sharedPreferences = getSharedPreferences("config", MODE_PRIVATE);
sharedPreferences.edit().putString("Text", "选取的内容");
boolean commit = sharedPreferences.edit().commit();
LogUtils.d(commit+"");//--->这里输出成功
LogUtils.d("保存的是"+sharedPreferences.getString("Text", "默认值"));//--->>这里输出"默认值"
}
//....用于初始化时,把保存到SharedPreferences中的文本内容,设置到EditText上
private void initPrgress() {
sharedPreferences = getSharedPreferences("config", MODE_PRIVATE);
String saveText = sharedPreferences.getString("Text", "这是默认值");
LogUtils.d("saveText:"+saveText);//----->>>这里输出"这是默认值"
if (saveText != null) {
eText.setText(saveText);
} else {
}
}
第一种情况下
当我调用
saveProgressText()
方法保存字符串的时候,正常情况下,应该把"选取的内容"保存到SharedPreferences中,并且输出true
,以及保存的是选取的内容
但是最终输出的时候
true
,以及默认值
第二种情况下
当Activity被加载的时候,调用
initPrgress()
方法,正常情况下,应该把我之前保存到SharedPreferences中的内容保存的内容
这五个字读取出来,在logcat输出保存的内容
这五个字,并设置到EditText上.但是最终输出的时候,却是输出的是
这是默认值
,并且在EditText显示的也是这是默认值
已解决
@li21 多谢了
sharedPreferences.edit().putString("wtestText", "选取的内容").commit();
直接提交即可
关于
edit()
这个方法,每次调用SharedPreferences.edit()
都会返回一个新的实例。你用1个实例保存数据。然后用另外1个实例commit,可是这第2个实例,并不包含第1个实例的数据呀。
正确的做法:
edit().putString("Text", "选取的内容").commit();