FirstActivity - PerfectCarl/androidannotations GitHub Wiki

Now that your project is configured to use AndroidAnnotations, let's have fun with it!

  • Create a new activity (or use an already existing one)
  • Use @EActivity, @ViewById and @Click on the activity, following this example :
import android.app.Activity;
import android.widget.EditText;
import android.widget.TextView;

import com.googlecode.androidannotations.annotations.Click;
import com.googlecode.androidannotations.annotations.EActivity;
import com.googlecode.androidannotations.annotations.ViewById;

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

    @ViewById(R.id.myInput)
    EditText myInput;
       
    @ViewById(R.id.myTextView)
    TextView textView;
        
    @Click
    void myButton() {
         String name = myInput.getText().toString();
    	 textView.setText("Hello "+name);
    }
}

The main.xml layout works as usual :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
	<EditText  
	    android:id="@+id/myInput"
	    android:layout_width="fill_parent" 
	    android:layout_height="wrap_content" 
	    />
	<Button  
	    android:id="@+id/myButton"
	    android:layout_width="fill_parent" 
	    android:layout_height="wrap_content" 
	    android:text="Click me!"
	    />        
	<TextView  
		android:id="@+id/myTextView"
	    android:layout_width="fill_parent" 
	    android:layout_height="wrap_content" 
	    />    
</LinearLayout>
  • Save the file (Eclipse will compile it, and generate a subclass of MyActivity, named MyActivity_)

  • Register MyActivity_ instead of MyActivity in your manifest :

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

The AndroidManifest.xml

You should always register your activity with an _ suffix in the Android Manifest.

This is because AndroidAnnotations generates a subclass for each annotated activity. It has the same package and name, plus an _ suffix.

AndroidAnnotations will tell you if you forget to register your activities in the AndroidManifest.xml.

Finding the AndroidManifest.xml

AndroidAnnotations finds the AndroidManifest.xml file by recursively going up from the generated source folder.

Since AndroidAnnotations 2.7

If this doesn't fit your project structure, you can specify the absolute path to the AndroidManifest.xml by giving an androidManifestFile option to the processor.

  • With javac, just pass the following option: -AandroidManifestFile=/path/to/AndroidManifest.xml
  • With Eclipse, go to Properties > Java Compiler > Annotation Processing and add an entry to Processor options.

To learn more about what you can do with AndroidAnnotations, read the Cookbook and the list of available annotations