fly1tkg blog

ViewのInjectについて – AndroidAnnotations

@ViewById

Viewクラスが型のメンバ変数に対して@ViewByIdをつけるとレイアウトからfindViewByIdのメソッドが代入された状態になります。

@EActivity
public class MyActivity extends Activity {

  /*
   * findViewById(R.id.myEditText)の
   * 結果が自動的に注入されます
   * R.id.<メンバ変数の名前>のルールです
   */
  @ViewById
  EditText myEditText;

  /*
   * findViewById(R.id.myTextView)の
   * 結果が自動的に注入されます
   * このようにカッコ内でIDを指定することも出来ます
   */
  @ViewById(R.id.myTextView)
  TextView textView;
}
@AfterViews

@AfterViewsがついたメソッドは@ViewByIdでViewが注入された直後に呼ばれます。Viewの初期化などをここで行います。

(Viewが注入される前に初期化などの処理をしようとすると、NullPoになります。これを使うと安全です)

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

    @ViewById
    TextView myTextView;

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