イベント処理の組み込み
続いて、ボタンクリックのイベント処理に進みましょう。onCreateでは、buttonにイベントリスナーを設定していますね。
button.setOnClickListener(new MyClickAdapter());
ボタンクリック時のイベント処理は、「setOnClickListener」というメソッドで設定をします。これは引数にOnClickListenerインターフェイスを実装したクラスを指定します。ここでは、MyClickAdapterという内部クラスを用意して利用していますね。これは以下のように定義されています。
class MyClickAdapter implements OnClickListener {
@Override
public void onClick(View v) {
Editable s = edit.getText();
text.setText("こんにちは、" + s + "さん。");
}
}
このOnClickListenerインターフェイスでは、「onClick」というメソッドが1つだけ用意されています。これが、クリックされたときの処理を行うものになります。引数には、イベントが発生したViewインスタンスが渡されます。
ここでは、editの「getText」でテキストを取り出し、これを加工してtextの「setText」でテキスト表示をさせています。が、ここでちょっと注意しておきたいのは、「getTextで得られるのはStringではない」という点です。これは、android.textパッケージの「Editable」クラスのインスタンスなのです。
まぁ、toStringでそのままStringは得られますし、StringリテラルとあわせてTextViewにsetTextしたりできますから、あまり「Stringでない」ということを意識することはないでしょう。が、「そのままStringとしては使えない」ということは忘れないようにしましょう。Stringを引数に持つメソッドで利用しようとしてエラーが出てしまう、というようなうっかりミスは、けっこう慣れない内にやってしまいがちですから。
これで、「XMLでレイアウトを作成し、それをJavaから利用する」というもっとも基本となる仕組みはわかってきました。とりあえず、今回登場した3つのコンポーネントを利用して、それぞれでプログラムを作ってみましょう。ちょっとしたアプリなら、既に作れるようになっているはずですよ。