Java 使用SharedReferences向字符串添加值

Java 使用SharedReferences向字符串添加值,java,android,Java,Android,我的目标是将值保存到字符串,然后将字符串存储到共享引用。此外,每次应用程序生成一个新值时,我都想将这个字符串添加到字符串数组,这将在每次使用应用程序时将字符串数组的长度增加1。我花了200多个小时试图让它工作,但我仍然不能让它正常工作。这就是我到目前为止所做的: public class MainActivity extends Activity { Set set = new HashSet(); set.add(EnterText.mynumber); @Override

我的目标是将值保存到
字符串
,然后将
字符串
存储到
共享引用
。此外,每次应用程序生成一个新值时,我都想将这个
字符串添加到
字符串数组
,这将在每次使用应用程序时将
字符串数组的长度增加1。我花了200多个小时试图让它工作,但我仍然不能让它正常工作。这就是我到目前为止所做的:

public class MainActivity extends Activity {

Set set = new HashSet();
set.add(EnterText.mynumber);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SharedPreferences sharedPreferences = getSharedPreferences(days,Activity.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putStringSet("strings", set);
        Boolean flag = editor.commit();

        SharedPreferences prefs = getSharedPreferences("MyPrefs",Activity.MODE_PRIVATE);
        Set set=new HashSet();
        set=prefs.getStringSet("strings", null);

    }

}
如果有人知道这样做的正确方法,或者我如何修复代码使其工作,我将非常感谢


感谢您的帮助

您应该使用putStringSet而不是putString

基本上,您需要创建一个包含所有字符串的集合

Set set =new HashSet();
set.add("String 1");
set.add("String 2");
set.add("String 3");
然后你可以写:

SharedPreferences prefs = getSharedPreferences("MyPrefs",
        Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putStringSet("strings", set);
Boolean flag = editor.commit();
要在下次运行应用程序时将其取回,您可以执行以下操作:

SharedPreferences prefs = getSharedPreferences("MyPrefs",
        Activity.MODE_PRIVATE);
Set set=new HashSet();
set=prefs.getStringSet("strings", null);

这还不清楚。你的意思是增加字符串的文本还是在字符串数组中添加一个新字符串?@Mikael,我想在字符串数组中添加一个新字符串。抱歉搞混了!但是您想要它,因为Sharefpref每个数组值一个元素?为什么在
getSharedReferences{days,Context.MODE_PRIVATE}中使用{}
而不是()?@algui91,本质上我试图将旧字符串数组保留在
SharedReferences
中,当应用程序再次运行时,我想将新值(
EnterText.mynumber
)添加到旧字符串数组中。这样,用户以前获得的所有值都保存在应用程序中。太棒了,只有一个问题:当我用所有字符串(在您描述的代码的第一部分)创建一个集合时,我是否替换
“字符串1”
使用我的字符串
number
?是,但从声明中甚至整个声明中删除括号:
set.add(EnterText.mynumber)嗯。。当我尝试此操作时,我在这一行得到错误
多个标记-标记上的语法错误“,”。。。预期-令牌“add”上出现语法错误,此令牌后面预期有标识符
很抱歉,您的代码没有意义。在开始编写代码之前,您需要考虑您正在尝试做什么。在某个时刻,应用程序需要将字符串保存到SharedReferences,在另一个时刻,它将检索字符串。这是我给你的几段代码。您编写的创建活动将获取一个字符串,将其放入SharedReferences中,然后再次获取它。除了两次声明
set
(导致崩溃)之外,这样做毫无意义,因为你根本不需要SharedReference。问题是,即使在这个应用程序关闭后,我希望字符串在下次应用程序启动时可用。这就是为什么我需要
SharedReferences
来获取字符串,然后将其反馈出去。