AndroidAnnotations——Injecting Views视图注入

翻译 2013年12月04日 20:09:55

Injecting Views视图注入

Since AndroidAnnotations 1.0

@ViewById


The @ViewById annotation indicates that an activity field should be bound with the corresponding View component from the layout. It is the same as calling the findViewById() method. The view id can be set in the annotation parameter, ie @ViewById(R.id.myTextView). If the view id is not set, the name of the field will be used. The field must not be private.
 @ViewById 注解标识一个activity字段应该和布局中的一致的视图组件绑定在一起。就和调用 findViewById()方法一样。view id可以在注解参数中添加,比如 @ViewById(R.id.myTextView)。假如没有设置view id,将默认使用字段名。这个字段不能是private类型的,一般使用默认类型或者protected类型。

Usage example:用法:

@EActivity
public class MyActivity extends Activity {

  // Injects R.id.myEditText
  @ViewById
  EditText myEditText;

  @ViewById(R.id.myTextView)
  TextView textView;
}

@AfterViews


The @AfterViews annotation indicates that a method should be called after the views binding has happened.
 @AfterViews 注解标识在视图绑定操作发生后,有个方法需要被调用,一般可以使用init方法名。

When onCreate() is called, @ViewById fields are not set yet. Therefore, you can use@AfterViews on methods to write code that depends on views.当 onCreate() 方法调用后, @ViewById 字段还没有设置好。因此,你可以用@AfterViews 注解绑定的方法添加处理视图相关的代码。

Usage example:用法:

@EActivity(R.layout.main)
public class MyActivity extends Activity {

    @ViewById
    TextView myTextView;

    @AfterViews
    void updateTextWithDate() {
        myTextView.setText("Date: " + new Date());
    }
[...]

You can annotate multiple methods with @AfterViews. Don't forget that you should not use any view field in onCreate():
你可以用 @AfterViews注解多个方法。不要忘记在 onCreate()方法中不能使用任何视图字段。

@EActivity(R.layout.main)
public class MyActivity extends Activity {

    @ViewById
    TextView myTextView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // DON'T DO THIS !! It will throw a NullPointerException, myTextView is not set yet.
        // myTextView.setText("Date: " + new Date());
    }
[...]

Recall that injection is always made as soon as possible. Therefore, it's safe to use any field annotated, e.g., with @Extra or @InstanceState in @AfterViews methods as these tags don't require any view to be set (as @AfterViews do). Therefore you can safely assume that such fields will be already initialized with their intended values in methods annotated with @AfterViews:
回想一下,注入总是以最快的速度完成。因此,在@AfterViews方法中使用任何不需要设置视图(像@AfterViews要做的)注解字段,比如@Extra 或者 @InstanceState,都是安全的。所以,你可以放心地假设这些字段在加了@AfterViews注解的方法中初始化值是安全的。

@EActivity(R.layout.main)
public class MyActivity extends Activity {

    @ViewById
    TextView myTextView;

    @InstanceState
    Integer textPosition;

    @AfterViews
    void updateTextPosition() {
        myTextView.setSelection(textPosition); //Sets the cursor position of myTextView
    }
[...] // The remaining code must keep textPosition updated.

AndroidAnnotations——Injecting SystemServices注入系统服务

SystemServices Since AndroidAnnotations 1.0 Standard Android System Service inject...
  • linjf2009
  • linjf2009
  • 2013年12月04日 20:14
  • 806

AndroidAnnotations——Injecting Extras注入Extras

Extras Since AndroidAnnotations 1.0 @Extra The @Extra annotation indicates that an activity...
  • linjf2009
  • linjf2009
  • 2013年12月04日 20:12
  • 1133

Injecting Views

原文地址: https://github.com/excilys/androidannotations/wiki/Injecting-Views @ViewById在Activity中@View...
  • Mrljdx
  • Mrljdx
  • 2015年04月06日 19:57
  • 318

AndroidAnnotations——Injecting project Resources注入项目资源

Resources Since AndroidAnnotations 1.0 All @XXXRes annotations indicate that an ac...
  • linjf2009
  • linjf2009
  • 2013年12月04日 20:11
  • 861

AndroidAnnotations——Injecting html注入html文本

Injecting html注入html Since AndroidAnnotations 2.2 If you want to inject HTML text in a TextV...
  • linjf2009
  • linjf2009
  • 2013年12月04日 20:16
  • 653

AndroidAnnotations——Injecting FragmentArg注入Fragment参数

FragmentArg Since AndroidAnnotations 2.7 @FragmentArg The @FragmentArg annotation indicat...
  • linjf2009
  • linjf2009
  • 2013年12月06日 08:56
  • 2441

android studio 配置androidannotations注入框架,问题一二三

最近比较闲,老是感觉编码应该是项轻松的感觉,代码不应该繁复!好的代码应该是易于理解,易读的,但是鉴于在同一个团队中各个人的水平不一样,然后代码风格也不一样,导致每次改代码修BUG的时候就莫名的烦躁,然...
  • diguoweiwu
  • diguoweiwu
  • 2016年03月09日 18:22
  • 383

【FastDev4Android框架开发】AndroidAnnnotations注入框架的工作原理(八)

(一):基本介绍(Overview)         AndroidAnnotations使用很简单的方式进行工作,它会使用Java标准的APT(Annotation Processing Tool...
  • jiangqq781931404
  • jiangqq781931404
  • 2015年10月28日 16:59
  • 2419

Django基于类的视图(views)

一个视图(view)是一个可调用对象(callable), 不仅仅局限于一个函数。 https://docs.djangoproject.com/en/1.8/ref/class-based-vie...
  • lzx1104
  • lzx1104
  • 2016年03月17日 17:29
  • 2674

AndroidAnnotations——Enhance Fragments 优化Fragments

Enhance Fragments 优化Fragments Support for FragmentActivity 对FragmentActivity的支持 Since Andro...
  • linjf2009
  • linjf2009
  • 2013年12月04日 15:55
  • 3513
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AndroidAnnotations——Injecting Views视图注入
举报原因:
原因补充:

(最多只允许输入30个字)