java应用重启导致数据丢失_java – 在重新启动应用程序后从SharedPreferences恢复时设置丢失数据...
我在android上使用SharedPreference來存儲一組字符串.根據我的知識存儲和檢索它,但是當重新啟動應用程序時,一些數據會丟失.字符串是逐個添加的,在添加它之前我檢索集合,添加字符串然后再次存儲它.
這是我存儲它的方式:
Set emptySet = null;
SharedPreferences prefs = getContext().getSharedPreferences(getContext().getString(R.string.pref_disagree_key), Activity.MODE_PRIVATE);
String newIdAgreed = getItem(position).getId();
if (prefs.contains(getContext().getString(R.string.pref_disagree_key))) {
Set updateSet = prefs.getStringSet(getContext().getString(R.string.pref_disagree_key), emptySet);
updateSet.add(newIdAgreed);
SharedPreferences.Editor editor = prefs.edit();
editor.putStringSet(getContext().getString(R.string.pref_disagree_key), updateSet);
editor.commit();
} else {
Set newSet = new HashSet();
newSet.add(newIdAgreed);
SharedPreferences.Editor editor = prefs.edit();
editor.putStringSet(getContext().getString(R.string.pref_disagree_key), newSet);
editor.commit();
}
這就是我得到它的方式:
if (prefsDisagree.contains(getContext().getString(R.string.pref_disagree_key))){
disagree_set = new HashSet(prefsDisagree.getStringSet(getContext().getString(R.string.pref_disagree_key), emptySet));
for (String item: disagree_set){
//stuff done here
}
}
我看到了一些關于這個主題的類似問題,但沒有一個答案解決了我的問題.有任何想法嗎?
解決方法:
當您嘗試在保存后再次編輯它時,StringSet不是持久的,因此當您退出應用程序并再次打開它時,剛添加的新數據將不會被保存.
您需要先復制StringSet,然后將數據插入/添加到復制的StringSet:
Set s = new HashSet
getContext().getString(R.string.pref_disagree_key),
emptySet));
標簽:java,android,sharedpreferences,set
來源: https://codeday.me/bug/20190519/1135780.html
總結
以上是生活随笔為你收集整理的java应用重启导致数据丢失_java – 在重新启动应用程序后从SharedPreferences恢复时设置丢失数据...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java怎么设置不同事件_activit
- 下一篇: go mysql存储过程_Golang