Есть несколько разных подходов к этому. Не имея ничего более, чем информация, которую вы хотите сохранить в HashMap для SharedPreferences, я могу только делать предположения.
Первое, что я хотел бы спросить, будете ли вы хранить другие вещи в SharedPreferences - я подумаю, что вы это сделаете.
Вот как бы я подошел к этому:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("backUpCurency", stringify(backUpCurency_values));
editor.commit();
Вы можете посмотреть, что делает stringify:
// turns a HashMap<String, String> into "key=value|key=value|key=value"
private String stringify(HashMap<String, String> map) {
StringBuilder sb = new StringBuilder();
for (String key : map.keySet()) {
sb.append(key).append("=").append(map.get(key)).append("|");
}
return sb.substring(0, sb.length() - 1); // this may be -2, but write a unit test
}
Затем вы можете просто проанализировать эту строку с известной структурой после прочтения общих настроек позже.
private HashMap<String, String> restoreIt() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String backup = settings.getString("backUpCurency", "");
HashMap<String, String> map = new HashMap<String, String>();
for (String pairs : backup.split("|")) {
String[] indiv = pairs.split("=");
map.put(indiv[0], indiv[1]);
}
return map;
}