2 csh 34 csh_34 于 2013.03.12 13:28 提问

有什么方法可以迭代整个 R.raw,R.drawable 或者任何 R 类吗?

有什么方法可以迭代整个 R.raw,R.drawable 或者任何 R 类吗?我想通过 iterate 动态的来逐条获取这些文件夹的每一个id。

ArrayList resArray = new ArrayList();
foreach(int id : R.raw) {
resArray.add(id);
}

有什么方法可以实现?

2个回答

CuGBabyBeaR
CuGBabyBeaR   2013.03.12 17:45
已采纳

用反射

    public void field(){
    Field[] fields =R.drawable.class.getFields();
    for(Field f : fields){
        try {
            Log.d("reflect", "字段名: "+f.getName()+" 值: "+f.getInt(f));
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

03-12 17:41:53.444: D/reflect(15356): 字段名: answer_box 值: 2130837504
03-12 17:41:53.452: D/reflect(15356): 字段名: answer_box_alt 值: 2130837505
03-12 17:41:53.452: D/reflect(15356): 字段名: app_ico_48 值: 2130837506
03-12 17:41:53.452: D/reflect(15356): 字段名: app_ico_72 值: 2130837507
03-12 17:41:53.452: D/reflect(15356): 字段名: background 值: 2130837508
03-12 17:41:53.452: D/reflect(15356): 字段名: button_normal 值: 2130837509

虽然可以做到 但还是奉劝:不要动他

csh_34
csh_34 非常好的回答,谢谢你!
接近 5 年之前 回复
qiushibaiyi
qiushibaiyi   2013.03.12 13:33

这样做的动机何在?干嘛去管那个本不该你管的文件……

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!