动态获取Android xml偏好文件

时间:2015-12-13 23:26:59

标签: android android-preferences

有没有办法获取只有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文件,这是我不想要的,因为每个文件可能都不是首选项文件。

1 个答案:

答案 0 :(得分:1)

在您将使用的首选项XML文件中添加前缀(类似“pref_”)。然后在您的代码中,只获取以您使用的前缀开头的XML文件。例如:

....
if (fields[i].getName().startsWith("pref")) {
    final int resourceId = fields[i].getInt(new R.xml());
    ...
}
....