menu.add(R.id.themesMenuGroup, R.style.AppThemeBlack, 0, R.string.AppThemeBlackName);
menu.add(R.id.themesMenuGroup, R.style.AppThemeBrown, 0, R.string.AppThemeBrownName);
menu.add(R.id.themesMenuGroup, R.style.AppThemeAmber, 0, R.string.AppThemeAmberName);
// ------- еще много аналогичных строк выброшено для экономии места -----------
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="styleNames">
<item>@string/AppThemeBlackName</item>
<item>@string/AppThemeBrownName</item>
<item>@string/AppThemeAmberName</item>
</array>
<!-- можно написать так -->
<string-array name="styleNames1">
<item>Черный</item>
<item>Коричневый</item>
<item>Оранжевый</item>
</string-array>
<integer-array name="styleIDs">
<item>@style/AppThemeBlack</item>
<item>@style/AppThemeBrown</item>
<item>@style/AppThemeAmber</item>
</integer-array>
</resources>
String[] names = getResources().getStringArray(R.array.styleNames);
int[] ids= getResources().getIntArray(R.array.styleIDs);
styleValues = new ArrayList<>();
Field[] styleFields = R.style.class.getDeclaredFields();
for (int i=0; i<styleFields.length; i++){
Field styleField = styleFields[i];
String styleName = styleField.getName();
if (styleName.startsWith("AppTheme")){
try {
ContentValues styleValue = new ContentValues();
styleValue.put("style",styleFields[i].getInt(styleName));
styleValue.put("name",R.string.class.getField(styleName+"Name").getInt(styleName+"Name"));
styleValues.add(styleValue);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}