Kay-Uwe Janssen edited this page Oct 9, 2016 · 15 revisions

10/12/2016 The 4.2.0 release is out !

Using AndroidAnnotations


Enjoying AndroidAnnotations

Improving AndroidAnnotations

Extending AndroidAnnotations

Clone this wiki locally


AndroidAnnotations works in a very simple way. It automatically adds an extra compilation step that generates source code, using the standard Java Annotation Processing Tool.

What source code ? For each enhanced class, for example each @EActivity annotated activity, a subclass of this activity is generated, with the same name plus an underscore appended at the end.

For instance, the following class:

public class MyActivity extends Activity {
  // ...

Will generate the following subclass, in the same package but in another source folder:

public final class MyActivity_ extends MyActivity {
  // ...

This subclass adds behavior to your activity by overriding some methods (for instance onCreate()), yet delegating the calls to super.

That is the reason why you must add _ to your activity names in AndroidManifest.xml:

<activity android:name=".MyListActivity_" />

Starting an annotated activity

In Android, you usually start an activity this way:

startActivity(this, MyListActivity.class);

However, with AndroidAnnotations, the real activity that must be started is MyListActivity_:

startActivity(this, MyListActivity_.class);

Intent Builder

Since AndroidAnnotations 2.4

We provide a static helper to let you start the generated activity:

// Starting the activity

// Building an intent from the activity
Intent intent = MyListActivity_.intent(context).get();

// You can provide flags

// You can even provide extras defined with @Extra in the activity

Since AndroidAnnotations 2.7

You can also use the startActivityForResult() equivalent:


Note that you can use the @OnActivityResult annotation to get result code and extra value.

void onResult(int resultCode) {

Since AndroidAnnotations 3.3

You can easily pass options Bundle parameter using the intent builder:


Since AndroidAnnotations 4.0.0

Activity transition animations can be added using the fluent intent builder.

MyListActivity_.intent(context).start().withAnimation(enterAnimRes, exitAnimRes));

Starting an annotated Service

In Android, you usually start a service this way:

startService(this, MyService.class);

However, with AndroidAnnotations, the real Service that must be started is MyService_:

startService(this, MyService_.class);

Intent Builder

Since AndroidAnnotations 2.7

We provide a static helper to let you start the generated service:

// Starting the service

// Building an intent from the activity
Intent intent = MyService_.intent(context).build();

// You can provide flags

Is there any performance impact?

The short answer is no. More on this subject in the FAQ.

Now that you get the basics, let's see how to enhance Activities.