gpt4 book ai didi

java - SharedPreferences 提交后不保存

转载 作者:行者123 更新时间:2023-12-02 04:59:36 26 4
gpt4 key购买 nike

嗨,我有以下代码,将数组列表存储到列表中,然后将其保存到 SharedPreference 中。但是当我重新运行应用程序时,这些值消失了,无论我调用多少次将更多元素添加到数组列表中,它都只会调用一次。以下是我的代码:

  //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 的数组列表中都只有 1,2,3,如果我重新启动应用程序,数组列表中的元素就会消失。请多多指教,非常感谢!

更新:我设法根据下面的答案在开始时检索我的值,但仍然无法将更多元素添加到数组列表中。数组列表中包含元素 1,2,3 。请提供建议。

最佳答案

No matter how many times i invoke onclick, the testres will have only 1,2,3 in the arraylist and if i restart the app

因为您在 Activity 启动时将值保存在 SharedPreferences 中,而该值仅保存默认值的 ArrayList。

要将 testres 与您在 Button 单击上添加的项目一起保存,请在 ArrayList 中添加项目后,在 onClick 方法内使用 SharedPreferences 相关代码。

        @Override
public void onClick(View arg0) {
testres.add("1");
testres.add("2");
testres.add("3");
//... save testres ArrayList in SharedPreferences here
}

关于java - SharedPreferences 提交后不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28402761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com