fly1tkg blog

EActivityについて – AndroidAnnotations

@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();