【问题标题】:SharedPreference not saving previous dataSharedPreference 不保存以前的数据
【发布时间】:2016-03-27 00:48:55
【问题描述】:

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

然后我转到另一个活动(订单活动),在其中显示该集合的信息。当我第一次访问共享首选项时,我能够获得正确的详细信息。例如名称 1、名称 2、名称 3。

然后我离开此活动,返回另一个活动,添加另一个名称并再次返回此订单活动。我期待这次得到name1、name2、name3、name4。相反,我只得到 name4。以前的名字似乎被删除了。

onCreate 方法中的Order Activity

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

P.S:在可能的重复问题中,只要他保持登录状态,他至少能够存储所有数据。只要我离开活动,我的就不会保存。不是同一个问题。

【问题讨论】:

标签: java android


【解决方案1】:

您将数据设置到之前数据所在的位置,因此您将其覆盖。

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

【讨论】:

    【解决方案2】:

    尝试清除您的Editor,如下所示:

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

    正如JoseLSegura所说...

    一种可能的解决方案是复制SharedPreferences 对象返回的Set<String>

    示例

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

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      对于保存共享首选项这样做:

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

      对于 加载 sharedpreferences 这样做:

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

      【讨论】:

      • 谢谢,但我对 putString 没有意见。我的是 StringSet。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多