有没有办法获取只有xml首选项文件的列表?我想动态设置sharedpreferences默认值,如下所示:
PreferenceManager.setDefaultValues(context, R.xml.somepreferencefile, true);
但是我目前有4个或5个首选项文件,我不想在每次添加新的首选项文件时修改代码。
我偶然发现了这个:
final Field[] fields = R.xml.class.getDeclaredFields();
// add any other files you might have added
for (int i = 0, max = fields.length; i < max; i++) {
try {
final int resourceId = fields[i].getInt(new R.xml());
PreferenceManager.setDefaultValues(context, resourceId, true);
} catch (Exception e) {
continue;
}
}
然而,这将拉出xml文件夹中的所有xml文件,这是我不想要的,因为每个文件可能都不是首选项文件。
答案 0 :(得分:1)
在您将使用的首选项XML文件中添加前缀(类似“pref_”)。然后在您的代码中,只获取以您使用的前缀开头的XML文件。例如:
....
if (fields[i].getName().startsWith("pref")) {
final int resourceId = fields[i].getInt(new R.xml());
...
}
....