使用注解简化findViewById
在android开发activity时需要通过findViewById取得布局中的view元素,但如果元素太多时需要重复调用该方法,从而导致代码臃肿。可以通过注解来精简代码。主要注解类与annot processo@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface ViewField {
/**
* view对应的id
*
* @return
*/
int value();
public static class Processor {
public static void process(Activity activity) throws Exception {
Field[] fields = activity.getClass().getDeclaredFields();
ViewField annot = null;
for (Field field : fields) {
annot = field.getAnnotation(ViewField.class);
if (annot != null) {
field.setAccessible(true);
field.set(activity, activity.findViewById(annot.value()));
}
}
}
}
}Activity中调用示例@ViewField(R.id.btn_ok)
Button btnOK;
@ViewField(R.id.et_orig)
EditText etOrig;
@ViewField(R.id.et_dest)
EditText etDest;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.new_task_layout);
try {
ViewField.Processor.process(this);
} catch (Exception e) {
throw new RuntimeException("加载view错误", e);
}
}
页:
[1]