public static void findView(Activity activity) {
try {
Class clazz = activity.getClass();
Field[] fields = clazz.getDeclaredFields();
String fieldName = null;
// 遍历所有字段
for (Field field : fields) {
fieldName = field.getName();
try {
Field idField = R.id.class.getField(fieldName);
int id = (Integer) idField.get(null);
View view = activity.findViewById(id);
field.setAccessible(true);
field.set(activity, view);
} catch (Exception e) {
}
}
} catch (Exception e) {
LogUtil.d("", e.getMessage());
}
}
实现思路: 根据xml中控件的id值, 对Activity中定义的同名成员变量进行注入. 比如xml中有个id为tv_name的TextView, 而且你的activity中定义了 TextView tv_name. 那么
在onCreate中调用这个方法即可实现tv_name字段的注入了.
当然, 为了提高性能, 你可以给你的名字加入一些特征, 然后修改该方法. 比如含有下划线_的字段才去尝试注入.