我正在向SharedPreference添加一个集合。这是另一个类的静态集合,该类处理一些数据并将其存储在该集合中。
然后,我转到另一个活动(“订单活动”),在其中显示该集合的信息。第一次访问共享首选项时,我可以获得正确的详细信息。例如name1,name2,name3。
然后,我离开此活动,回到另一个活动,添加另一个名称,然后再次回到该Order活动。我期望这次获得name1,name2,name3,name4。相反,我只得到name4。以前的名称似乎已删除。
onCreate方法中的订单活动
SharedPreferences prefItemName =
this.getSharedPreferences("com.example..........", MODE_PRIVATE);
//CustomListAdapter is a class that is adding names to the static HashSet names
prefItemName.edit().putStringSet("name", CustomOrderListAdapter.names).apply();
for(String x : prefItemName.getStringSet("name", null)){
Log.i("Name", x);
}
附注:在可能重复的问题中,只要他保持登录状态,他至少能够存储所有数据。只要我离开活动,矿山就不会保存。 Ist是不一样的问题。
最佳答案
尝试清除您的Editor
,如下所示:
Editor edit = sp.edit();
edit.clear();
正如JoseLSegura所说...
一种可能的解决方案是复制
Set<String>
对象返回的SharedPreferences
的副本例
Set<String> ss = new HashSet<String>(sharedPrefs.getStringSet("name", new HashSet<String>()));
然后,使用
Editor
进行如下清除:Editor edit = sp.edit();
edit.clear();
edit.putStringSet("name", ss);
edit.commit();
希望能帮助到你。