I am trying to save an int array into the shared preferences.
int myInts[]={1,2,3,4};
SharedPreferences prefs = getSharedPreferences(
"Settings", 0);
SharedPreferences.Editor editor = prefs
.edit();
editor.putInt("savedints", myInts);
Since the putInt method does not accept int arrays, I was wondering if anyone knew another way to do this. Thanks
you can add only primitive values to sharedpreference
......
refer this doc:
http://developer.android.com/reference/android/content/SharedPreferences.html
Consider JSON.
JSON is well integrated into Android and you can serialize any complex type of java object. In your case the following code would be suited well.
// 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();
}
You can serialize an array to String
using TextUtils.join(";", myInts)
and the deserialize it back using something like TextUtils. SimpleStringSplitter
or implement your own TextUtils.StringSplitter
.
If your integers are unique, perhaps you can use putStringSet
(see docs). Otherwise you have to resort to serializing / formatting your integer array as String, as suggested by other answers.