hen*_*343 13 android sharedpreferences
我需要将Set放入SharedPreference中,但我遇到了问题.
当我单击按钮时,我将从SharedPreference获取Set并将数据添加到Set然后放回SharedPreference,但是当我销毁项目并再次打开它时,sharedPreference只在Set中获取一个字符串
SharedPreferences s = getSharedPreferences("db", 0);
Log.i("chauster", "1.set = "+s.getStringSet("set", new HashSet<String>()));
Button btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences ss = getSharedPreferences("db", 0);
Set<String> hs = ss.getStringSet("set", new HashSet<String>());
hs.add(String.valueOf(hs.size()+1));
Editor edit = ss.edit();
edit.putStringSet("set", hs);
edit.commit();
SharedPreferences sss = getSharedPreferences("db", 0);
Log.i("chauster", "2.set = "+sss.getStringSet("set",
new HashSet<String>()));
}
});
Run Code Online (Sandbox Code Playgroud)
当我先安装项目时,我点击按钮4次,logcat打印出来
1.set = []
2.set = [1]
2.set = [2, 1]
2.set = [3, 2, 1]
2.set = [3, 2, 1, 4]
Run Code Online (Sandbox Code Playgroud)
将字符串放入sharedPreference Set看起来很成功,但是当我销毁app并再次打开它时,logcat会打印出来
1.set = [1]
Run Code Online (Sandbox Code Playgroud)
它意味着在sharedPreference中只有一个字符串,我不知道发生了什么?请帮我.谢谢〜
Mr_*_*s_D 40
你陷入了编辑你从getStringSet()获得的值的通常陷阱.这在文档中是禁止的
你应该 :
SharedPreferences ss = getSharedPreferences("db", 0);
Set<String> hs = ss.getStringSet("set", new HashSet<String>());
Set<String> in = new HashSet<String>(hs);
in.add(String.valueOf(hs.size()+1));
ss.edit().putStringSet("set", in).commit(); // brevity
// SharedPreferences sss = getSharedPreferences("db", 0); // not needed
Log.i("chauster", "2.set = "+ ss.getStringSet("set", new HashSet<String>()));
Run Code Online (Sandbox Code Playgroud)
对于半个出炉的解释,请参阅:尝试使用SharedPreferences存储字符串集时出现错误行为
小智 8
在putStringSet之前使用edit.clear()
SharedPreferences ss = getSharedPreferences("db", 0);
Set<String> hs = ss.getStringSet("set", new HashSet<String>());
hs.add(String.valueOf(hs.size()+1));
Editor edit = ss.edit();
edit.clear();
edit.putStringSet("set", hs);
edit.commit();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19711 次 |
| 最近记录: |