→ chris930921:在edit.putStringSet()前加上edit.clear()就正常了 02/01 01:11
我想在SharedPreferences裡面放StringSet,以下是我的code,首先在oncreate的時候
先偵測Stringset的數量,然後有一個button,當我點下button的時候,會把Stringset
的size取出來加1,然後add到Stringset以後再存回SharedPreferences。
SharedPreferences s = getSharedPreferences("db", 0);
Log.i("c", "1.set = "+s.getStringSet("set", new HashSet<String>()));
Button btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SharedPreferences ss = getSharedPreferences("db", 0);
Set<String> hs = ss.getStringSet("set", new HashSet<String>());
hs.add(String.valueOf(hs.size()+1));
Editor edit = ss.edit();
edit.putStringSet("set", hs);
edit.commit();
SharedPreferences sss = getSharedPreferences("db", 0);
Log.i("c", "2.set = "+sss.getStringSet("set", new HashSet<String>()));
}
});
當我第一次安裝程式並且點了4下button,log會顯示
1.set = []
2.set = [1]
2.set = [2, 1]
2.set = [3, 2, 1]
2.set = [3, 2, 1, 4]
到這邊看起來沒有什麼問題,可是當我把程式整個關掉在重新打開的時候,log顯示
1.set = [1]
為什麼這邊只有存在一筆資料呢,我在存入以後又特別把資料取出來確認,
確定有4筆資料,可是只要我把程式整個關掉在打開,卻只取到一筆資料。
有人有遇到相同的問題嗎?
感謝...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.11.185.225