我正在向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();


希望能帮助到你。

10-06 09:15
查看更多