【问题标题】:How do I add an int array into shared preferences?如何将 int 数组添加到共享首选项中?
【发布时间】:2011-08-26 07:38:56
【问题描述】:

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

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

由于 putInt 方法不接受 int 数组,我想知道是否有人知道另一种方法来执行此操作。谢谢

【问题讨论】:

    标签: android arrays


    【解决方案1】:

    考虑 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();
        }
    

    【讨论】:

    • JSON 方法的问题是我想更改数组,但似乎没有办法执行 myInt[3]=4 之类的操作,因为我们只是在堆叠整数跨度>
    • 不幸的是,是的! Android框架的json库没有办法做到这一点...
    【解决方案2】:

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

    参考这个文档:

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

    【讨论】:

    • 你有什么建议可以让我达到同样的效果吗?
    • 您可以使用Sqlite ...如果数据不是太大,您可以将int数组值一一放入sharedpreference作为int值..
    • 可以说我一一做了 int 值。如果我将我的键命名为 1.2.3 等,我可以使用 prefs.getInt(i,0) 之类的 for 循环来调用它吗?还是键总是字符串
    • 你的键应该是字符串......如果将键存储在常量文件中,就像这个 public static final String VAR = "var";和 public static final String VAR1 = "var1"; --------现在您可以使用 for 循环来添加和获取这样的值:------for(int i = 1; i
    【解决方案3】:

    您可以使用TextUtils.join(";", myInts) 将数组序列化为String,然后使用TextUtils. SimpleStringSplitter 或实现您自己的TextUtils.StringSplitter 将其反序列化。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-15
        • 2012-11-14
        相关资源
        最近更新 更多