动态获取 Android xml 个首选项文件
Get Android xml preference files dynamically
有没有办法只获取 xml 首选项文件的列表?我想像这样动态设置 sharedpreferences 默认值:
PreferenceManager.setDefaultValues(context, R.xml.somepreferencefile, true);
但是我目前有 4 或 5 个首选项文件,我希望每次添加新首选项文件时都不必 mod 代码。
我偶然发现了这个:
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 文件,我不希望这样,因为每个文件可能都不是首选项文件。
在您将要使用的首选项 XML 文件中添加一个前缀(类似于 "pref_")。然后在您的代码中,只获取以您使用的前缀开头的 XML 文件。例如:
....
if (fields[i].getName().startsWith("pref")) {
final int resourceId = fields[i].getInt(new R.xml());
...
}
....
有没有办法只获取 xml 首选项文件的列表?我想像这样动态设置 sharedpreferences 默认值:
PreferenceManager.setDefaultValues(context, R.xml.somepreferencefile, true);
但是我目前有 4 或 5 个首选项文件,我希望每次添加新首选项文件时都不必 mod 代码。
我偶然发现了这个:
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 文件,我不希望这样,因为每个文件可能都不是首选项文件。
在您将要使用的首选项 XML 文件中添加一个前缀(类似于 "pref_")。然后在您的代码中,只获取以您使用的前缀开头的 XML 文件。例如:
....
if (fields[i].getName().startsWith("pref")) {
final int resourceId = fields[i].getInt(new R.xml());
...
}
....