android sharedpreferences StringSet不能真正存储数据的问题

public static void saveNo(String no,Context context){
SharedPreferences p=context.getSharedPreferences(FILENAME,Activity.MODE_PRIVATE);
Set<String> set=p.getStringSet(SETNAME, new HashSet<String>());
if(!set.contains(no)){
set.add(no);
Editor editor = p.edit();
editor.putStringSet(SETNAME, set);
boolean is=editor.commit();
System.out.println(is);
}

}

这个是android一般调用SharedPreferences 的Set存储数据的方法,但是我发现当程序重启,关机以后数据会丢失,找了一下午找到原因,出去看了下国外网站得到提示,原来是SharedPreferences 这个类的原因,他会创立一个对象,当然这个set也是其中一个元素,当我们新建一个set的时候对新建的set的操作并不能影响到SharedPreferences 的对象的set,因此,相关代码改成Set<String> set=new HashSet<String>(p.getStringSet(SETNAME, new HashSet<String>()));就行了,这段代码只是创建了SharedPreferences 里面set的副本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值