当前位置: 首页 > 知识库问答 >
问题:

共享首选项不保存以前的数据

龚鸿雪
2023-03-14

我正在向SharedPreference添加一个集合。这是来自另一个类的静态集,该类处理一些数据并将其存储在该集中。

然后我转到另一个活动(订单活动),在那里我显示了这组信息。第一次访问共享偏好时,我能够获得正确的详细信息。例如name1、name2、name3。

然后,我离开此活动,返回到另一个活动,添加另一个名称,然后再次返回到此 Order 活动。我希望这次得到名称1,名称2,名称3,名称4。相反,我只得到名字4。以前的名字似乎被删除了。

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

页(page的缩写)s:在可能的重复问题中,只要他保持登录,他至少能够存储所有数据。只要我离开活动,我的就不会保存。Ist不是同一个问题。

共有3个答案

苍元章
2023-03-14

您将数据设置到先前数据所在的相同位置,因此您将覆盖它。

在这种情况下,您应该首先检索所有数据,然后保存所有数据。

哈骞仕
2023-03-14

要保存sharedpreferences,请执行以下操作:

SharedPreferences sp = PreferenceManager
            .getDefaultSharedPreferences(myActivityContent);
    Editor edit = sp.edit();
    edit.putString("mystring", mystring);

用于加载共享首选项,如下所示:

sharedpreferences sp = PreferenceManager
                    .getDefaultSharedPreferences(myActivityContent);
    String loadshare = sp.getString("mystring", sharemethod);
    if (!a2 .equals(sharemethod))
        //load data is successfully. 
    else
        //load data is unsuccessfully. 
岳承悦
2023-03-14

尝试将您的编辑器弄清楚,如下所示:

Editor edit = sp.edit();
edit.clear();

正如JoseLSegura所说。。。

一个可能的解决方案是复制<code>集合

Set<String> ss = new HashSet<String>(sharedPrefs.getStringSet("name", new HashSet<String>()));

然后使用编辑器,您可以清楚地执行以下操作:

Editor edit = sp.edit();
edit.clear();
edit.putStringSet("name", ss);
edit.commit();

希望对您有所帮助。

 类似资料:
  • 我正在创建一个番茄工作计时器应用程序。它有2项活动: 主要活动是设置时间 我已经创建了一个对象,它保存了设置的时间,我希望这些时间显示在Recents活动中的按钮中。但是,似乎没有保存数据,而是显示了包名称。

  • 你好,我正在尝试保存一个共享首选项的主题。当用户点击某个主题的按钮时,我希望该主题被设置为默认并保存,所以当他们重新打开应用程序时,它仍然是那个新主题。

  • 我在共享首选项中保存列表并将其显示在列表视图中没有问题,但我的问题是当我重新启动应用程序并尝试将项目添加到列表视图时 旧的存储项目已删除.有我的代码: } public void getDates(){

  • 对于下面的代码,我正在尝试检索共享的首选项,我认为它保存正确,但当我回到登录屏幕时,所有的数据都消失了。我需要它留在我回到这个屏幕上。所以我在个人资料页面上输入姓名、年龄和id到三个单独的行中。然后按下save按钮,然后按下action Bar上的back转到前面的页面。当我回到个人资料页面时,我的信息应该还在那里,但它没有任何帮助?

  • 非常感谢您的光临,我正在为学校开发一个应用程序,我遇到了另一个问题。该应用程序的主要思想是跟踪您的卡路里,我希望它能节省卡路里,所以当应用程序关闭时,它仍然会记住他们。我已经忙了一段时间了,现在尝试使用SavedPreferences,但我总是出现错误。我希望有人能帮我。 } 我可能做了很多明显的愚蠢的事情,但我真的弄不明白。 多谢!

  • 我想在我的共享首选项中保存一些数据,但在保存时,例外情况如下。在第SharedReferences行。编辑器存储=默认数据。编辑(); 05-29 20:20:53.234:E/AndroidRuntime(27650):致命异常:main 05-29 20:20:53.234:E/AndroidRuntime(27650):java。lang.NullPointerException 05-29