下面部分是基于2.6上使用的注解和解释
AfterInject 定义的方法在类的构造方法执行后执行
AfterTextChange 定义的方法在TextView及其子类的Text属性改变后执行
AfterViews 定义的方法在setContentView后执行
Background 定义的方法在后台线程执行
BeforeTextChange 定义的方法在TextView及其子类的Text属性改变前执行
Click 定义点击监听器
EActivity 在Activity中启用Annotations
EProvider 在 ContentProvider中启用Annotations
EReceive 在BroadcastReceiver中启用Annotations
EService 在Service中启用Annotations
EView 在自定义的View的子类中启用Annotations
Fullscreen 全屏
NoTitle 无标题
3.0
中增加了
EFragment 对Fragment的支持
还有官网上给出的Rest GET (我猜想这是个请求还没试过)
以下方法在本人并不知道在2.6里面是否存在。
@Transactional 数据库查询注释。必要参数SQLiteDatabase
添加该注释的方法中可以直接写对应的sql方法。至于对数据库的事务处理则在之后生成的文件中会帮你处理
@ItemClick 即 OnItemClickListener
listItemClicked(int position) position则就是当前的item的position
如果传递的类型不是int 那么则调用parent.getAdapter().getItem(position) 强制转换
@ItemSelect 即 OnItemSelectedListener
必须包含一个boolean参数,额外最多再增加一个参数
@ItemLongClick即OnItemLongClickListener
与ItemClick 同理
@StringArrayRes 即获得array的资源参数
@StringRes 获取string参数
@ColorRes 获取color参数
@BooleanRes 获取bool参数
@SystemService 获取getSystemService的参数
@UiThread(delay = 100) 延迟100毫秒后执行
@Extra(MY_STRING_EXTRA) 即 Bundle extras_ = getIntent().getExtras();
if(extras_.containsKey(MY_STRING_EXTRA))
xx = extras_.getString(MY_STRING_EXTRA);
注意点:
第一关于注解类的引用:
如果大伙打开我们项目可以看到.apt_generated这样一个文件,这里面就是存放我们注解后生成的最终类文件。
我们可以打开看到最后的生成的类都是final。这是3.0后才增加的,所以不支持我们的注解类是抽象的。(PS:抽象类,小样的,你还打算让我框架牛逼到几个意思帮你实现抽象方法啊~)
我们在AndroidManifest.xml中注册的activity,service则都在缘有类的后面增加"_"如:将LoginActivity类头顶增加了@EActivity,那么在AndroidManifest.xml中注册的类则是:LoginActivity_ 当然包名是原先的一样的。当然这样之后我们在一个activity中打开另外一个activity则也是打开他最终的生成类(如:LoginActivity_)由于eclipse的毛病不少所以有的时候我们直接引用LoginActivity_ 这样类会失败,所以有网友提供一个反射方法来提取该类方法如下:
public class GeneratedClassUtils {
@SuppressWarnings("rawtypes")
public static Class get(Class clazz) {
if (clazz == null) {
return null;
}
if (clazz.getCanonicalName().endsWith("_")) {
return clazz;
}
String name = clazz.getCanonicalName() + "_";
try {
Class result = Class.forName(name);
return result;
} catch (ClassNotFoundException e) {
new RuntimeException("Cannot find class for" + name, e);
}
return null;
}
}
第二关于命名。
由于你的注解类会通过AndroidAnnotations生成一个最终类,所以当你在很愉快的写 @ViewId @Click的时候,AndroidAnnotations会在你的最终类里面默默的写下hasViews.findViewById(id.layout_top_bar_right).这是多好助手,但是你在使用的同时也应当注意,这里面使用到id.xxx这id原本引用的是R.id。那如果我们在我们的注解类上写个非private的id呢~这时候就会提示我们空指针异常了。所以第二点必须注意,尽量少在注解类使用 id命名的参数,如果需要使用请使用private 形容。
目前掌握的内容就这么多。
以后有时间会不定期更新~