您好我有以下代码将arraylist存储到列表中然后将其保存到SharedPreference中。但是当我重新运行应用程序时,值已经消失,无论我多少次调用向arraylist添加更多元素,它只会调用一次。 以下是我的代码:
//debug usage
Button z = (Button)findViewById(R.id.button3);
z.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
testres.add("1");
testres.add("2");
testres.add("3");
}
});
SharedPreferences prefs=this.getSharedPreferences("yourPrefsKey", Context.MODE_PRIVATE);
SharedPreferences.Editor edit=prefs.edit();
Set<String> set = new HashSet<String>();
set.addAll(testres);
edit.putStringSet("yourKey", set);
edit.commit();
这就是我检索的方式:
SharedPreferences prefs=this.getSharedPreferences("yourPrefsKey", Context.MODE_PRIVATE);
Set<String> set = prefs.getStringSet("yourKey", null);
List<String> sample= new ArrayList<String>(set);
testres = new ArrayList<String> (set);
for(int i =0; i<testres.size();i++){
System.out.println("Printing: "+testres.get(i));
}
无论我调用onclick多少次,testres在arraylist中只有1,2,3,如果我重新启动应用程序,arraylist中的元素就会消失。建议非常感谢你!
更新:我设法根据以下答案在启动时检索我的值,但仍然无法在arraylist中添加更多元素。 arraylist卡在元素1,2,3上。建议。
答案 0 :(得分:2)
无论我多次调用onclick,testres都只有 在arraylist中1,2,3,如果我重新启动应用程序
由于您在活动开始时保存SharedPreferences
中的值,仅保存具有默认值的ArrayList。
要保存testres
您添加的项目,按钮点击也会在添加ArrayList中的项目后使用onClick方法中的SharedPreferences
相关代码。
@Override
public void onClick(View arg0) {
testres.add("1");
testres.add("2");
testres.add("3");
//... save testres ArrayList in SharedPreferences here
}
答案 1 :(得分:0)
SharedPreferences prefs=this.getSharedPreferences("yourPrefsKey", Context.MODE_PRIVATE);
SharedPreferences.Editor edit=prefs.edit();
Button z = (Button)findViewById(R.id.button3);
z.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
testres.add("1");
testres.add("2");
testres.add("3");
Set<String> set = new HashSet<String>();
set.addAll(testres);
edit.putStringSet("yourKey", set);
edit.commit();
}
});