0

可能重复:
SharedPreferences 中的字符串数组

我是 Android 的新手,想研究如何从 Preferences 中保存和检索 String[]。现在我有两个代码示例。这个是为了省钱

    void saveText() {
    sPref = getSharedPreferences("MyPref", MODE_PRIVATE);
    Editor ed = sPref.edit();
    ed.putString(SAVED_TEXT, position_name);
    ed.commit();
}

和 position_name 作为 EditText 输入。首先,它应该保存在 String 数组中,然后保存在 Preferences 中的 String 数组中。对于加载,我有以下代码

    void loadText() {
    sPref = getSharedPreferences("MyPref", MODE_PRIVATE);
    String position_name = sPref.getString(SAVED_TEXT, "");
    bazar.add(new Bazar(position_name, R.drawable.unread));
}

这两种方法都是静态的,但我希望它们能够处理动态字符串类型数据。简而言之,我输入一些数据,它应该存储在字符串数组中,然后字符串数组存储在首选项中,当我加载我的活动时,我希望检索那些存储的数据。尝试了不同的方法没有结果。你能帮我解决这个问题吗?

4

3 回答 3

1

您可以使用 API 级别 11 和更高级别中的 SharedPreferences 存储字符串集。见getStringSet()putStringSet()

在 11 之前的 API 级别中,您可以使用某种 hack。例如,如果您需要在键“stringArray”下存储字符串数组,则可以使用 putString 和键“stringArray.1”、“stringArray.2”等来保存数组中的每个字符串。

于 2012-10-11T13:24:23.767 回答
0

您不能因为共享首选项仅支持原始变量,至少不能用于 api 11 下的任何内容。对于较低的内容,您可以做的是逐步遍历数组并将其单独放在此处http://www.sherif .mobi/2012/05/string-arrays-and-object-arrays-in.html?m=1

我个人做的是序列化我猜想把它变成 0 和 1 的对象。然后你把它放在那里。您需要获得一个序列化类或自己制作一个 将 ArrayList 保存到 SharedPreferences

可耻的是你。一个简单的搜索就会得到这些结果

于 2012-10-11T13:35:06.423 回答
0

通过 ,(comma) 分隔符将其保存为字符串,在获取时只需使用 split()

string str="";
str += "item1,";
.
.

在 SharePreference 和 commit() 中设置 String str 要在数组中获得相同的结果:从 SharePreference 中获取 prefStr

String[] Array= prefStr.split(",");

希望它会帮助你。

于 2012-10-11T13:37:11.460 回答