まったりと進んでいるAndroidのプログラム作成入門,今回で第四回になる。今回はレイアウト・エディタを使ってコンポーネントを画面に貼り付け,コードを記述するという流れを,ボタンを例に説明したい。

 main.xmlのlayoutタブを選択すると,ButtonやCheckBox,EditTextなどの基本部品をはじめとする多くのコンポーネントを選んで,画面(黒い部分)に貼り付けることができる。ここではButtonと前回も使ったTextViewを一つずつドラッグ&ドロップしてみた。

 XMLは,次のように記述される。layout関係のプロパティは前回の「EclipseでAndroidプロジェクトを作成する」で解説済みなので問題ないだろう。今回新たに出てきたのはidプロパティの指定である。

 "@+id/Button01"のように@+id/名前という形式でidプロパティは記述する。このidを使ってプログラムからコンポーネントにアクセスする。

 XMLファイル上の部品と自分で記述するプログラムをつなぐR.javaには自動的に,クラスidに同じ名前で識別子が作成されている。

 次に,ボタンがクリックされたときの処理をコーディングする。findViewByIdメソッドでこの画面に配置されているButtonとTextViewのインスタンスを取得する。

 そして,ClickListenerクラスを生成し,btn.setOnClickListener(listener)でボタン・クリック時に実行されるように,リスナーを仕掛けている。

 ClickListenerの中では,onClickメソッドでTextViewのtext文字列をgetTextメソッドで取得し,“ボタンが押されました”という文字列と連結し,setTextメソッドでTextViewに設定している。

 実行すると,以下のように表示される。何度もクリックすると,“ボタンが押されました”という文字列がどんどんつながっていく。

 最後に,Overrideアノテーションについて説明する。@Overrideをメソッドの前に記述することで,コンパイラに「このメソッドはオーバライド・メソッドですよ」と伝えることができる。つまり,コンパイラはOverrideアノテーションにより,本当にオーバライドされているか,メソッド名を打ち間違えていないかをチェックできるわけだ。

 注意してほしいのは,JDK6を使っている場合は,このサンプル・プログラムのようにクラス(Activity)のメソッドをオーバライドするときだけでなく,インタフェース(OnClickListenerはインタフェース)に宣言されているメソッドをオーバライドするときにも@Overrideが使えるが,JDK5の場合は,インタフェースを実装(implements)しているときには使えない点だ。

 さて,この日記の本来の主役こうしろうは現在,経済学部の三回生であるが,春に受験した応用情報技術者試験に合格した。13歳のときに基本情報技術者試験を受けたときは,中学2年のこうしろうに「あーでもない,こうでもない」とアドバイスしたが(第91話の「ありがとうございましたと彼は言った」を参照),大阪にいる大学生にはアドバイスする術もなく,内容的にも第一種情報技術者試験という古いタイトルしか持たない父はおぼつかなく,「受かったらいいなあ」と願うばかりであった。

 13歳から20歳の7年間は大きな期間であると,あらためて思う。