fly1tkg blog

基本的な使い方 AndroidAnnotations

AndroidAnnotations(以下AA)の基本的な使い方を説明します。

AAの設定がされていない場合は以下のリンクを参考に設定してください。

事前準備 AndroidAnnotations | b.fly1tkg.com

公式Wiki Get Started!

@EActivityをつける

AAをActivityで使用するにはクラスに@EActivityをつける必要があります。

@EActivity
public class MyActivity extends Activity {

そしてAndroidManifest.xmlへのActivityの登録は_のsuffixが必要になります。

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

これは上記の例で言うとMyActivityを継承したMyActivity_というクラスがAAによって生成され、MyActivity_で色々と便利なコードが生成されるからです。

AAでHelloWorld

次のようなコードでAAを使ったHello Worldを作成することが出来ます。

詳しくはEActivityのエントリーで説明します。

MyActivity.java

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

main.xml

<?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>

まず@EActivity(R.layout.main)でres/layout/main.xmlのレイアウトを適用出来ます。

また@ViewById(R.id.myTextView)でmain.xmlのidがmyTextViewのTextViewのインスタンスが自動的に代入されます。これでfindViewById(R.id.myTextView)といったコードを書かなくてもよいです。

@Clickはメソッド名と同じIDのViewがクリックされたときの処理を指定しています。ここではmyButtonがクリックされた時にmyTextViewにテキストを表示することをしています。@Click(R.id.myButton)のようにIDを指定することも出来ます。