@EActivityのアノテーションをつけることでそのActivity内でAndroidAnnotations(以下AA)が使えるようになります。以下のようにActivityに@EActivityをつけます。
@EActivity(R.layout.main)
public class MyActivity extends Activity {
}
ListActivityなどレイアウトを指定しない場合はそのままつければOKです。
@EActivity
public class MyListActivity extends ListActivity {
}
@EActivityをつけると元のクラスを継承し、_のsuffixがついたコードが生成されます。そのためAndroidManifest.xmlに登録する際は最後に_をつけます。
<activity android:name="MyActivity_"/>
IntentBuilder
EActivityではAAが使える以外に特徴的なこととして、IntentBuiderというものが自動で生成されるということです。
例えば通常ActivityにIntentする時は以下のようなコードを書くと思います。
Intent i = new Intent(this, MyActivity.class); startActivity(i);
このIntentBuilderを使うと次のような書き方が出来ます。
new MyActivity_.IntentBuilder_(this).start();
IntentBuilderよってIntentでの値の受け渡しは、@Extraがついたデフォルトのメンバ変数に対してsetterが準備されます。
以下のようなMainActivityに遷移使用とする時
@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {
@Extra String name;
@Extra int id;
}
Intentするためのコードは以下のようになります。
new MainActivity_.IntentBuilder_(this)
.name("answer")
.id(42)
.start();
IntentのFlagもセットすることも出来ます
new MainActivity_.IntentBuilder_(this)
.flags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
.start();