最简单的android annotation demo
来源:互联网 发布:河南进出口数据 编辑:程序博客网 时间:2024/06/06 01:27
最近了解到android annotation,其实技术点也并不多,只是平时写应用的开发者接触的并不多。这里简单的写一个demo【findviewById】,用于理解,举一反三。
ViewInject类
package com.simpleanswer.annotationdemo.view;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ViewInject {
int id() default -1;
}
AnnotationActivity 基类
package com.simpleanswer.annotationdemo;
import java.lang.reflect.Field;
import com.simpleanswer.annotationdemo.view.ViewInject;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class AnnotationActivity extends Activity {
@Overridepublic void setContentView(int layoutResID) { super.setContentView(layoutResID); autoInjectAllField(this);}public void autoInjectAllField(Activity activity){ //得到Activity对应的Class Class clazz=this.getClass(); //得到该Activity的所有字段 Field[] fields=clazz.getDeclaredFields(); for(Field field :fields) { //判断字段是否标注ViewInject if(field.isAnnotationPresent(ViewInject.class)) { //如果标注了,就获得它的id ViewInject inject=field.getAnnotation(ViewInject.class); int id=inject.id(); if(id>0) { //反射访问私有成员,必须加上这句 field.setAccessible(true); //然后对这个属性复制 try { field.set(activity, activity.findViewById(id)); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } } } }}
}
MainActivity引用
package com.simpleanswer.annotationdemo;
import com.simpleanswer.annotationdemo.view.ViewInject;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AnnotationActivity {
@ViewInject(id=R.id.main_tv) TextView tv;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv.setText("我爱这个世界!");}
}
xml我就不贴了。源码自行下载。
源码
- 最简单的android annotation demo
- android最简单的生成二维码demo
- android最简单的生成二维码demo
- android最简单的发送文本短信的demo
- 最简单的Tkinter demo
- SimpleAdapter最简单的Demo
- spec 最简单的demo
- 最简单的Hibernate DEMO配置
- 最简单的SPRING DEMO 程序
- 世界上最简单的log4 demo 程序
- 世界上最简单的 junit demo 程序
- 世界上最简单的Xdoclect demo
- 【C#】最简单的写日志DEMO
- Spring最简单的Java Project Demo
- spring mvc最简单的demo
- Vitamio的最简单Demo-MediaPlayer
- 最简单的微信小程序Demo示范
- ARKit最简单的一个Demo
- 初学Spring中关于Spring的依赖注入
- 总结eclipse中安装maven插件
- java 让程序定时运行
- 安装ubuntu 10.10终于成功!
- 使用Chef自动化部署框架的好处
- 最简单的android annotation demo
- How Android Draws Views(Android 视图绘制机制)
- 【干货】2015中国互联网行业人才库报告
- BZOJ 4216 Pig 分块乱搞
- Cookbook
- 【读书笔记】iOS-开发技巧-三种收起键盘的方法
- 使用MATLAB BNT贝叶斯工具箱,进行Gibbs Sampling之前需要做的编译工作
- Cool Android Apis 整理(一)
- C#基础知识