3 回答
TA贡献1874条经验 获得超12个赞
好的,这感觉有点骇人听闻,但这就是我通过Reflection提出的。(请注意,这resources是class的实例android.content.res.Resources。)
final R.drawable drawableResources = new R.drawable();
final Class<R.drawable> c = R.drawable.class;
final Field[] fields = c.getDeclaredFields();
for (int i = 0, max = fields.length; i < max; i++) {
final int resourceId;
try {
resourceId = fields[i].getInt(drawableResources);
} catch (Exception e) {
continue;
}
/* make use of resourceId for accessing Drawables here */
}
如果有人拥有更好的解决方案,可以更好地利用我可能不知道的Android通话,那么我肯定希望看到他们!
TA贡献1884条经验 获得超4个赞
我对Matt Huggins做出了很好的回答,并对其进行了重构以使其更加通用:
public static void loadDrawables(Class<?> clz){
final Field[] fields = clz.getDeclaredFields();
for (Field field : fields) {
final int drawableId;
try {
drawableId = field.getInt(clz);
} catch (Exception e) {
continue;
}
/* make use of drawableId for accessing Drawables here */
}
}
用法:
loadDrawables(R.drawable.class);
- 3 回答
- 0 关注
- 521 浏览
添加回答
举报