どんな仕組みになっているのでしょうか?
「MainActivity.java」の書き換えた部分は3か所のみです(import文は除いて)
まずは、11行目から見てみましょう。
public class MainActivity extends Activity implements OnClickListener{
MainActivityクラスにOnClickListenerインタフェースを実装しています。
このインタフェースには抽象メソッド(オーバーライドしなくてはいけないメソッド)が1つだけ定義されていて、
実装したクラス(ここではMainActivity)にクリック時の処理が定義されていることを示す役割があります。
次に、28行目からの以下のコードを見てみましょう。
@Override public void onClick(View v) { Toast.makeText(this, R.string.hello_world, Toast.LENGTH_SHORT).show(); }
onClick()メソッドをオーバーライドしています。
OnClickListenerインタフェースで定義されていた抽象メソッドがこれです。
メソッドの中には、オブジェクトを「クリックしたときの処理」を記述するのですが、今回はToastクラスのmakeText()メソッドとshow()メソッドの呼び出しを行っています。
このmakeText()メソッドがToastオブジェクトを作るためのメソッド、show()メソッドがトーストを表示するためのメソッドになります。
最後に、18行目からの以下のコードです。
Button button = (Button)findViewById(R.id.button1); button.setOnClickListener(this);
18行目でButtonクラスの変数を作成しています。
Buttonクラスはその名の通り画面に配置したボタンを表すクラスで、このようにしてインスタンス化(オブジェクト化)を行います。
Buttonクラスはnewでインスタンス化することも可能ですが、findViewById()メソッドを用いる方がよく使われるようです。
このbuttonオブジェクトが「クリックするオブジェクト」(クリックしたときに反応するオブジェクト)になります。
19行目では作成したbuttonオブジェクトのsetOnClickListener()メソッドを呼び出しています。
引数にはthisを渡しています。
thisということはMainActivityクラスのオブジェクトということになりますが、MainActivityクラスには11行目でOnClickListenerインタフェースを実装していました。
そう、setOnClickListener()メソッドの引数にはOnClickListenerインタフェースを実装したオブジェクトを渡さなくてはいけないのです。
このsetOnClickListener()メソッドで「クリックするオブジェクト」(button)と「クリックしたときの処理」(thisに定義されているonClick()メソッド)が紐づくことになります。
最後に
今回はボタンを押したときにトーストを出力するというプログラムを作ってみました。
このソースプログラムを完全に理解できるようになるのはまだまだ先のことになります。ここで全てを理解する必要はありません。
「お!なんか動いた!!」
読者のみなさまがこんな気持ちになっていただけたら大成功だと思ってます(笑
次回は今回のプログラムを修正しつながら、もう少し掘り下げていきたいと思います。
初めて出てきたクラス・インタフェースたち
- OnClickListenerインタフェース
http://developer.android.com/intl/ja/reference/android/view/View.OnClickListener.html
- Toastクラス
http://developer.android.com/intl/ja/reference/android/widget/Toast.html
- Buttonクラス
http://developer.android.com/intl/ja/reference/android/widget/Button.html
Android TIPS
Android TIPS 日本アンドロイドの会 2012年7月定例会
Android TIPS 開発環境の構築①
Android TIPS 開発環境の構築②
Android TIPS 開発環境の構築③
Android TIPS Toastの表示時間を長く/短くする
Android TIPS HelloWorldプログラムの作成・実行
Android TIPS HelloWorldプログラムについて
Android TIPS アプリケーション開発 初級(activity_main.xmlについて)
Android TIPS アプリケーション開発 初級(strings.xmlについて)
Android TIPS アプリケーション開発 初級(ローカライズ)
Android TIPS ボタン(Button)とイベントリスナー
Android TIPS onClick(View) はスーパークラスのメソッドをオーバーライドする必要があります
Android TIPS フラグメントでタブレット用レイアウトを作る
Android TIPS DialogFragmentをつかってAlertDialogを表示する
Android TIPS DialogFragmentをつかってAlertDialogを表示する(その2)
Android TIPS タブレットとスマートフォンに対応したアプリケーション
Android TIPS エミュレータが起動しない(PANIC: Could not open: C:Users…)
とっても簡単なAndroidサンプルアプリ集
【Button・電話・ブラウザ】
【EditText・TextView・Button】
【Spinner・TextView】
【RadioButton・Toast 単体のRadioGroup】
【RadioButton・Toast 複数のRadioGroup】
【Spinnerの項目をJavaで記述(MainActivity.javaに記述)・Toast】
【ProgressDialog・EditTextのnull(未入力)を取得・Button】
【ListView・配列】
Android 基礎
[Android 基礎] リニアレイアウト LinearLayout概要
[Android 基礎] 相対レイアウト RelativeLayout概要
ADT Bundle (Android 新開発環境)
最新のAndroid開発環境【adt-bundle】のまとめ
ADT Bundleを使って開発環境を構築する(Android SDK revision 21)
Eclipseを日本語化する(Pleiadesプラグイン使用)
Android講座 体験レポート
Android講座 体験レポート 第1回
Android講座 体験レポート 第2回
Android講座 体験レポート 第3回
Android講座 体験レポート 第4回
Android講座 体験レポート 第5回
Android講座 体験レポート 第6回
Android講座 体験レポート 第7回
Android講座 体験レポート 第8回
Android講座 体験レポート 第9回
Android講座 体験レポート 第10回
Android講座 体験レポート 第11回
Android講座 体験レポート 最終回