我正在尝试将int数组保存到共享首选项中。
int myInts[]={1,2,3,4};
SharedPreferences prefs = getSharedPreferences(
"Settings", 0);
SharedPreferences.Editor editor = prefs
.edit();
editor.putInt("savedints", myInts);
由于putInt方法不接受int数组,我想知道是否有人知道另一种方法。感谢
答案 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。