利用注解初始化View对象
2016-05-20 22:24
495 查看
为了避免每次使用Activity时都要利用findViewById一个个初始化语句,所以想利用注解来减少一些重复劳动
一、创建一个注解:
基本需要一个id即可以初始化一个View对象
/**
* Created by chen on 2016/5/20.
* @Target 设置目标为字段
* @Retention 设置作用域为运行时
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ViewId {
int id();
}
二、编写绑定组件到对象的工具类
public class BindViewUtil {
public static void bindViewByContext(Activity activity) {
try {
Class root = activity.getClass();
Field[] field = root.getDeclaredFields();
for (Field f : field) {
if (f.isAnnotationPresent(ViewId.class)) {
f.setAccessible(true);
ViewId idAnno=f.getAnnotation(ViewId.class);
f.set(activity,activity.findViewById(idAnno.id()));
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
三、使用如下
利用注解绑定id,在OnCreate方法中调用bindViewByContext方法即可
一、创建一个注解:
基本需要一个id即可以初始化一个View对象
/**
* Created by chen on 2016/5/20.
* @Target 设置目标为字段
* @Retention 设置作用域为运行时
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ViewId {
int id();
}
二、编写绑定组件到对象的工具类
public class BindViewUtil {
public static void bindViewByContext(Activity activity) {
try {
Class root = activity.getClass();
Field[] field = root.getDeclaredFields();
for (Field f : field) {
if (f.isAnnotationPresent(ViewId.class)) {
f.setAccessible(true);
ViewId idAnno=f.getAnnotation(ViewId.class);
f.set(activity,activity.findViewById(idAnno.id()));
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
三、使用如下
利用注解绑定id,在OnCreate方法中调用bindViewByContext方法即可
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories