共有設定に文字列セットを保存します。読み出せば問題ありません。私は他の活動を開始し、戻ってもう一度読みます。大丈夫です。アプリケーションを閉じて再度起動すると、セットが取得されますが、アイテムは 4 つではなく 1 つしかありません。これは常に発生します。既知の問題はありますか? 何が間違っている可能性がありますか?
クラスでは、アプリケーションの oncreate メソッドで作成されるものには、SharedPreferences と SharePreferences.Editor 変数があります。save メソッドと load メソッドでそれらを使用します。
public void saveFeedback(FeedbackItem feedbackItem) {
checkSp();
Set<String> feedbackSet = getFeedbacksSet();
if(feedbackSet == null){
feedbackSet = new HashSet<String>();
}
JSONObject json = createJSONObjectfromFeedback(feedbackItem);
feedbackSet.add(json.toString());
ed.putStringSet(CoreSetup.KEY_FEEDBACK, feedbackSet);
ed.commit();
}
public Set<String> getFeedbacksSet(){
checkSp();
Set<String> ret = sp.getStringSet(CoreSetup.KEY_FEEDBACK, null);
return ret;
}
private void checkSp(){
if(this.sp == null)
this.sp = applicationContext.getSharedPreferences(applicationContext.getPackageName(), Context.MODE_PRIVATE);
if(this.ed == null)
this.ed = this.sp.edit();
}
アプリの実行中にすべてのアイテムを完全に保存し、再起動後にすべてのアイテムがセットに含まれていないことがどうして起こるのか理解できません。そして、すべてのアイテムが削除された場合、いくつかのアイテムがなくなり、1 つのアイテムがまだそこにあるよりも受け入れられると思います。説明はありますか?