我有一个警报管理器,我很难找到一种方法
A) store a unique ID for each pending intent alarm
B) a name to identify each alarm with and
C) a number which represents an alarm sound to be used.
我正在使用SharedPreferences
这个问题,但他们只能做一个警报实例,我想将这些数据存储到多个警报实例中。即使应用程序关闭,我也需要保留此数据,以便当用户再次打开应用程序时,可以看到已经设置的警报的详细信息。
alarm1 -> 2431 -> 12
alarm2 -> 8412 -> 42
alarm3 -> 5425 -> 52
答案 0 :(得分:1)
您始终可以使用SQLlite数据库存储表中的值。另一方面,如果您坚持将其保存在共享首选项中,则可以使用在SharedPreference中保存数组并从中加载数组,如下所示:
public String[] loadArray(String arrayName) {
SharedPreferences prefs = getSharedPreferences("preferencename", 0);
int size = prefs.getInt(arrayName + "_size", 0);
String array[] = new String[size];
for(int i=0;i<size;i++)
array[i] = prefs.getString(arrayName + "_" + i, null);
return array;
}
public boolean saveArray(String[] array, String arrayName) {
SharedPreferences prefs = getSharedPreferences("preferencename", 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(arrayName +"_size", array.length);
for(int i=0;i<array.length;i++)
editor.putString(arrayName + "_" + i, array[i]);
return editor.commit();
}
因此,为了保存数组调用:
String [] alarmNames; // Load the array with values
saveArray(alarmNames, "nameOfAlarms");
String [] alarmIds; // Load the array with values
saveArray(alarmIds, "idOfAlarms");
String [] alarmSounds; // Load the array with values
saveArray(alarmSounds, "soundOfAlarms");
从共享首选项加载数组
String [] arrName = loadArray("nameOfAlarms");
String [] arrID = loadArray("idOfAlarms");
String [] arrSound = loadArray("soundOfAlarms");
有关详情,请参阅How to properly use load array and save array methods?和Save ArrayList to SharedPreferences。
希望这会有所帮助。