如何将int数组添加到共享首选项中?

时间:2011-08-26 07:38:57

标签: android arrays

我正在尝试将int数组保存到共享首选项中。

int myInts[]={1,2,3,4};
SharedPreferences prefs = getSharedPreferences(
                        "Settings", 0);
                SharedPreferences.Editor editor = prefs
                        .edit();
                editor.putInt("savedints", myInts);

由于putInt方法不接受int数组,我想知道是否有人知道另一种方法。感谢

4 个答案:

答案 0 :(得分:11)

考虑JSON。 JSON很好地集成到Android中,您可以序列化任何复杂类型的Java对象。在您的情况下,以下代码将很适合。

// write
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    JSONArray arr = new JSONArray();
    arr.put(12);
    arr.put(-6);
    prefs.edit().putString("key", arr.toString());
    prefs.edit().commit();
    // read
    try {
        arr = new JSONArray(prefs.getString("key", "[]"));
        arr.getInt(1); // -6
    } catch (JSONException e) {
        e.printStackTrace();
    }

答案 1 :(得分:4)

您只能将原始值添加到sharedpreference ......

参考此文档:

http://developer.android.com/reference/android/content/SharedPreferences.html

答案 2 :(得分:3)

您可以使用String将数组序列化为TextUtils.join(";", myInts),并使用TextUtils. SimpleStringSplitter之类的内容对其进行反序列化,或者实现您自己的TextUtils.StringSplitter

答案 3 :(得分:0)

如果您的整数是唯一的,也许您可​​以使用putStringSet(请参阅docs)。否则,您必须按照其他答案的建议,将整数数组序列化/格式化为String。