Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java &引用;prefs";显示为未使用?_Java_Android_String_Arraylist_Preference - Fatal编程技术网

Java &引用;prefs";显示为未使用?

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

我试图通过在用户按下按钮时将字符串添加到编辑器来保存字符串。然后我尝试从首选项中检索字符串,并将其转换为arrayList

立即创建

 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");