Skip to content

Enhance custom classes

pyricau edited this page Jan 12, 2012 · 25 revisions

Since AndroidAnnotations 2.3

Enhancing custom classes

You can use annotations in a class that is not a standard Android component (such as an Activity, a Service).

You just need to annotate it with @Enhanced:

@Enhanced
public class MyClass {

}

Injecting enhanced classes

To use this enhanced class in another enhanced class or in an enhanced Android component, use @Inject:

@Enhanced
public class MyOtherClass {

  @Inject
  MyClass myClass;

}

Notice how you can chain dependencies:

@EActivity
public class MyActivity extends Activity {

  @Inject
  MyOtherClass myOtherClass;

}

Supported annotations

You can use most AA annotations in an @Enhanced class:

@Enhanced
public class MyClass {

  @SystemService
  NotificationManager notificationManager;

  @UiThread
  void updateUI() {

  }

}

View related annotations

You can use view related annotations ([@View](Injecting Views), @Click...) in your @Enhanced class:

@Enhanced
public class MyClass {

  @ViewById
  TextView myTextView;

  @Click(R.id.myButton)
  void handleButtonClick() {

  }

}

Notice that this will only work if the root Android component that depends on MyClass is an activity with a layout that contains the needed views. Otherwise, myTextView will be null, and handleButtonClick() will never be called.

@RootContext

Using AndroidAnnotations

Questions?

Enjoying AndroidAnnotations

Improving AndroidAnnotations

Clone this wiki locally