Java &引用;prefs";显示为未使用?
我试图通过在用户按下按钮时将字符串添加到编辑器来保存字符串。然后我尝试从首选项中检索字符串,并将其转换为arrayList 立即创建Java &引用;prefs";显示为未使用?,java,android,string,arraylist,preference,Java,Android,String,Arraylist,Preference,我试图通过在用户按下按钮时将字符串添加到编辑器来保存字符串。然后我尝试从首选项中检索字符串,并将其转换为arrayList 立即创建 this.context = getApplicationContext(); SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE); SharedPreferences.Editor editor = pre
this.context = getApplicationContext();
SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
int size = updatableList.size();
editor.putInt("list_size", size);
for (int i = 0; i < size; i++) {
((SharedPreferences) editor).getString("list_"+i, updatableList.get(i));
}
editor.commit();
它说应用程序后面的prefs没有使用,我认为这很奇怪,因为我认为它告诉它putString。应用程序到达那里时崩溃。为什么应用程序中的“我的首选项”稍后会被使用?您是在这里尝试
getString
还是putString
for (int i = 0; i < size; i++) {
((SharedPreferences) editor).getString("list_"+i, updatableList.get(i));
}
for(int i=0;i
因为前面的代码会执行一个putInt
SharedReference的工作方式类似于键值对。如果找不到该键,它将返回默认值
从上面的代码中,您首先尝试获取字符串,然后尝试putString。因此,初始get将返回默认值
此外,您还提到代码崩溃。你介意粘贴碰撞日志吗 我在这里看到一个主要问题,它是以下几行:
i=i++;
这将根本不会改变i
。您告诉它递增i,但同时将i设置为递增之前的值<代码>i++代码>是您想要的
另外,我建议使用
SharedReferences.Editor.putStringSet()
而不是putString()
——这样你就不需要关心大小等问题了。在“保存前”中,请像下面这段代码一样尝试
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
Editor edit = sp.edit();
edit.putString("KEY", "value");
edit.commit();
去拿它
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
sp.getString("KEY", "defaultValue");
我使用putStrings和getStrings是否正确?这是我第一次使用它,也是第一次使用偏好。感谢avdThanks重播Russ。你能再解释一下提取过程吗?我对此感到厌倦,但SP是一个共享引用,所以我不能在我的字符串方法中使用它。我不确定如何获取我的保存字符串。SharedReferences sp=PreferenceManager.GetDefaultSharedReferences(此);sp.getString(“键”,imagePath);好吧,我只是累了。但现在它成了一套。如何提取?Set=newhashset();set=prefs.getStringSet(“键”,null)
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
sp.getString("KEY", "defaultValue");