如下面的代码,我查询到所有属性,并判断属性的类型是Button,然后向给他们绑定一下事件,但是报错了.说Field 没办法 转换成Button,请问是我的写法有问题,还是确实不能这样操作呢?
Field[] fields=this.getClass().getDeclaredFields();
for(int i=0;i<fields.length;i++){
if(fields[i].getType().toString()=="Button"){
((Button)fields[i]).setOnClickListener(this);
}
}
------解决思路----------------------
((Button)fields[i]).setOnClickListener(this); 这个不能强转。
fields[i] 是Field类型, 你是想通过反射 一次性注册Click事件对吧.
((Button)fields[i].get(MyActivity.this)).setOnClickListener(this); 你这样试试
------解决思路----------------------
判断应该这样: if(fields[i].getType()==Button.class),toString后应该是“class 包名.类名.xxx”,这个记不太清了。
field[i]本身就是field类型,怎么可能转成Button呢?不能这样写的。