Java 提交后未保存SharedReferences
您好,我有以下代码将arraylist存储到列表中,然后将其保存到SharedReference中。但是当我重新运行应用程序时,这些值就消失了,无论我调用多少次,在arraylist中添加更多元素,它都只会调用一次。 以下是我的代码:Java 提交后未保存SharedReferences,java,android,Java,Android,您好,我有以下代码将arraylist存储到列表中,然后将其保存到SharedReference中。但是当我重新运行应用程序时,这些值就消失了,无论我调用多少次,在arraylist中添加更多元素,它都只会调用一次。 以下是我的代码: //debug usage Button z = (Button)findViewById(R.id.button3); z.setOnClickListener(new View.OnClickListener() { @O
//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();
//调试用法
按钮z=(按钮)findViewById(R.id.button3);
z、 setOnClickListener(新视图。OnClickListener(){
@凌驾
公共void onClick(视图arg0){
测试结果添加(“1”);
测试结果添加(“2”);
测试结果添加(“3”);
}
});
SharedReferences prefs=this.getSharedReferences(“YourPrefsky”,Context.MODE\u PRIVATE);
SharedReferences.Editor edit=prefs.edit();
Set=newhashset();
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));
}
SharedReferences prefs=this.getSharedReferences(“yourpresky”,Context.MODE\u PRIVATE);
Set Set=prefs.getStringSet(“yourKey”,null);
列表样本=新阵列列表(集合);
testres=新阵列列表(集合);
对于(int i=0;i
无论我调用onclick多少次,testres都只有
arraylist中的1,2,3,如果我重新启动应用程序
因为您在活动开始时将值保存在SharedReferences
中,该活动仅使用默认值保存ArrayList
若要使用按钮上添加的项目保存testres
,请在ArrayList中添加项目后,在onClick方法中使用SharedReferences
相关代码
@Override
public void onClick(View arg0) {
testres.add("1");
testres.add("2");
testres.add("3");
//... save testres ArrayList in SharedPreferences here
}
SharedReferences prefs=this.getSharedReferences(“yourpresky”,Context.MODE\u PRIVATE);
SharedReferences.Editor edit=prefs.edit();
按钮z=(按钮)findViewById(R.id.button3);
z、 setOnClickListener(新视图。OnClickListener(){
@凌驾
公共void onClick(视图arg0){
测试结果添加(“1”);
测试结果添加(“2”);
测试结果添加(“3”);
Set=newhashset();
set.addAll(testres);
edit.putStringSet(“yourKey”,set);
edit.commit();
}
});
Try.apply()不是通过重新启动来提交,你的意思是,从eclipse以调试/运行模式重新部署,还是退出应用程序并从启动器启动?@Eyball尝试过但不起作用。=/@GokulNath关闭并从菜单bro重新运行。您好,谢谢您的回答。是的,我可以在启动应用程序时检索我的值,但我无法将更多元素添加到我的arraylist否不管调用了多少onclick。你有什么建议吗?嗨,谢谢你的回答。是的,我可以在按照上面的建议启动应用程序时检索我的值,但无论调用了多少onclick,我都无法在我的arraylist中添加更多的元素。你有什么建议吗?@Gene:在列表中添加更多你拥有的项目添加到SharedReferences中。首先,您需要从ArrayList中的SharedReferences
获取所有值,然后在ArrayList中添加从SharedReferences
检索到的其他项。如果您有任何困惑,请告诉我?您好,我相信我是通过List sample=new ArrayList(set);testres=new ArrayList(set)完成的;我做错了吗?@Gene:我希望你知道Set总是包含不重复的项,这就是为什么你总是得到1,2,3
@Gene:Set.addAll(testres);
行在Set
中不再添加相同的项1,2,3
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();
}
});