SharedPreferences putStringSet 不起作用 [英] SharedPreferences putStringSet doesn't work

查看:59
本文介绍了SharedPreferences putStringSet 不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要将 Set 放在 SharedPreference 中,但我遇到了问题.

I need to put Set in SharedPreference, but I have a problem.

当我点击按钮时,我将从SharedPreference中获取Set并将数据添加到Set然后放回SharedPreference,但是当我销毁项目并再次打开它时,sharedPreference只在Set中获取一个字符串

when I click button, I will get Set from SharedPreference and add data to Set then put back SharedPreference, but when I destroy project and open it again, the sharedPreference only get one string in 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>()));
    }
});

当我第一次安装项目时,我点击按钮 4 次,logcat 打印它

when I install project first, and I click button 4 times, the logcat print it

1.set = []
2.set = [1]
2.set = [2, 1]
2.set = [3, 2, 1]
2.set = [3, 2, 1, 4]

将字符串放入 sharedPreference Set 看起来很成功,但是当我销毁应用程序并再次打开它时,logcat 会打印它

it's look like success to put string in sharedPreference Set, but when I destroy app and open it again, the logcat print it

1.set = [1]

意思是sharedPreference里面只有一个字符串,不知道怎么回事?请帮我.谢谢~

it means only one string in Set from sharedPreference, I don't know what's happened? Please help me. thanks~

推荐答案

在 putStringSet 之前使用 edit.clear()

use edit.clear() before putStringSet

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

这篇关于SharedPreferences putStringSet 不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆