Android简易注解View(java反射实现)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android简易注解View(java反射实现),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2058字,纯文字阅读大概需要3分钟。
内容图文
一、引言
Android中通过findViewById在布局文件中找到需要的View,加入一个Activity里面有许多的View需要初始化,那将是一件很繁琐的事情。当然Google一下你会发现有很多Android Annotations框架。比如比较有名的“Android Annotations”,这样的框架很复杂,用起来也比较麻烦,还有一些BUG,第一次使用也花费了不少时间研究。也许你在项目中只希望用到 Inject View这个功能,又或者你想知道这个实现的原理是怎样的。本文主要是解决这两个问题,实现一个最简单的ViewInject.
二、原理
原理是在Activity加载好后通过找到Activity中使用注解的字段,再通过Java反射的方式,动态的给这个字段设置值。
1、首先你需要了解一下Java的注解是如何工作的,如果你不了解可以先看一下相关的资料,这个比较简答。首先定义我们的注解类:
1 /** 2 * view inect by id 3 * 4 * @author Lucky 5 * 6 */ 7 @Target(ElementType.FIELD)//表示用在字段上 8 @Retention(RetentionPolicy.RUNTIME)//表示在生命周期是运行时 9public @interface ViewInject { 10int value() default 0; 11 }
2、我们需要定义个BaseActivity,在这个类中来解析注解
1 /** 2 * 3 * @author Lucky 4 * 5 */ 6 public abstract class BaseActivity extends FragmentActivity { 7/** 8 * get content view layout id 9 * 10 * @return11*/12publicabstractint getLayoutId(); 131415 @Override 16protectedvoid onCreate(Bundle savedInstanceState) { 17super.onCreate(savedInstanceState); 18 setContentView(getLayoutId()); 19 autoInjectAllField(); 20 } 21/**22 * 解析注解 23*/24publicvoid autoInjectAllField() { 25try { 26 Class<?> clazz = this.getClass(); 27 Field[] fields = clazz.getDeclaredFields();//获得Activity中声明的字段28for (Field field : fields) { 29// 查看这个字段是否有我们自定义的注解类标志的30if (field.isAnnotationPresent(ViewInject.class)) { 31 ViewInject inject = field.getAnnotation(ViewInject.class); 32int id = inject.value(); 33if (id > 0) { 34 field.setAccessible(true); 35 field.set(this, this.findViewById(id));//给我们要找的字段设置值36 } 37 } 38 } 39 } catch (IllegalAccessException e) { 40 e.printStackTrace(); 41 } catch (IllegalArgumentException e) { 42 e.printStackTrace(); 43 } 44 } 45 }
3、完成上面的步骤后就是如何去使用了,示例代码如下:
1 public class TestActivity extends BaseActivity { 2 3 @ViewInject(R.id.claim_statement) 4private WebView mWebView; 5 6 7 @Override 8publicint getLayoutId() { 9// TODO Auto-generated method stub10return R.layout.activity_claim; 11 } 1213 }
这样就可以了。几行代码可以大大的提高工作效率。
PS:推荐使用第三方完整的注解框架。
原文:http://www.cnblogs.com/Jack-Lu/p/4386578.html
内容总结
以上是互联网集市为您收集整理的Android简易注解View(java反射实现)全部内容,希望文章能够帮你解决Android简易注解View(java反射实现)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。