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 project Resources注入项目资源

Resources Since AndroidAnnotations 1.0 All @XXXRes annotations indicate that an ac...

AndroidAnnotations——Enhance custom views 优化自定义组件

Enhance custom views 优化自定义组件 @EView and @EViewGroup are the annotations to use if you want to c...

Android快速开发必备——依赖注入(DI)类库的选择ButterKnife,AndroidAnnotations,RoboGuice

现在做移动端开发的开发者,不管是Android和IOS,公司一般都是喜欢那种具备独立开发能力的人,因为APP项目相对较小,有时候一个人完全可以单独胜任一个项目。所以如果我们要能够具备独立开发的能力,快...

第12章 视图(views

  • 2011年11月20日 21:17
  • 5.77MB
  • 下载

Android跨进程事件注入 Injecting to another application requires INJECT_EVENTS permission

Android跨进程事件注入时会出现如下错误Injecting to another application requires INJECT_EVENTS permission,本文提供了一种解决上述...
  • lis_12
  • lis_12
  • 2017年06月10日 20:51
  • 911

Asp.net Mvc 多级控制器 路由重写 及 多级Views目录 的寻找视图的规则

一般我们在mvc开发过程中,都会碰到这样的问题。页面总是写在Views文件夹下,而且还只能一个Controller的页面只能写在相应的以Controller名命名的文件夹下。如果我们写到别处呢?那么肯...

Backbone.js(一) 模型Models和视图Views

1.简介 backbone.js通过以键值对绑定的模型(Models)、自定义事件、具有丰富函数API的集合(Collections)、事件处理视图(Views)来结构化Web应用程序,并通过RES...
  • koukan3
  • koukan3
  • 2017年03月29日 17:58
  • 285

Swipe Views(滑动视图)

http://developer.android.com/intl/zh-CN/design/patterns/swipe-views.html 拥有高效的导航是建立拥有一个优秀设计的应用的基础之一。...

Zend Framework布局和视图 Layouts views

Zend Framework 的view 组件是Zend_View。这个view 组件的功能是将action函数中的代码和显示页面的代码分开写。 Zend_View 工作原理 Zend_View ...

用基于类的通用视图处理表单(Class-based generic views)

from:http://www.cnblogs.com/huafeng/p/3273421.html 处理表单通常包含3步: 初始化GET(空白的后者预填充的表单)...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AndroidAnnotations——Injecting Views视图注入
举报原因:
原因补充:

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