2011-06-03

Android の onClick event listener を楽に書く

ヒビノアワさんがブログでこんなことを呟いてた。

androidのアプリ開発をしてると、画面のUI部品のイベントを受け取るイベントリスナを書くことになるわけですが、これ、書き方によっては、やたらonCreateメソッドが長くなっちゃっていやだーなと思っていたのです。

ヒビノアワ: Javaのイベントリスナをどう書く? より引用

この点について、Android 1.6 以降は (onClick イベントに限って) 楽な書き方ができる様になっている。Android の開発ブログにも書かれているので、大意を取って解説する。

一般的な書き方

UI の button にクリックされた時のメソッドを定義したい場合; つまり button に onClick の EventListener を紐付けたい場合、onCreate メソッドの中に次の様なコードを書く。


findViewById(R.id.myButton).setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // やりたいこと
    }
});

ボタンの数が増えると、上記のコードを何行も書くか、if 文で分岐を入れるかしないといけない。これは大変。

Layout で設定

Android 1.6 からは、XML layout ファイルにクリックされた時に呼ばれるメソッドを書ける様になった; button 要素が onClick 属性を持ち、メソッドを直接指定できる様になった。

レイアウト・ファイルはこうなる。


<Button android:onClick="myClickHandler" />

で、Java ファイルには (onCreate メソッドの外に) 次の様なコードを書けばいい。


class MyActivity extends Activity {
    public void myClickHandler(View target) {
        // やりたいこと
    }
}

この書き方なら、ボタンの数が増えても onCreate は長くならないし、コードの見た目もスッキリする。何より、コーディングが楽。でしょう?

No comments:

Post a Comment