クリックイベントに応答する
ここでは、グラフィカルなユーザーインターフェイスをもつプログラムで、ボタンをクリックした時に何らかの処理を行う方法について説明します。
ボタンとひとくちにいうと、単にクリックに応答するかどうか程度のことしかないかと思いがちですが、 実はボタンクラス (android.widget.Button) は、 java.lang.Object » android.view.View » android.widget.TextView と順番に派生しているので、さまざまなイベントが定義されています。
アンドロイドアプリでクリックイベントの処理
クリックイベントの処理を行うためには、ボタンにクリックリスナー (Click Listener) をセットして、そのクリックリスナーの onClick メソッドをオーバーライドします。
ここではそのボタンをビュー内に含むアクティビティで OnClickListener (android.view.View.OnClickListener) インターフェイスを実装します。
package com.keicode.android.test;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
public class ATest1 extends Activity
implements OnClickListener {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
View showButton = findViewById(R.id.button1);
showButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.button1:
Log.d("My Test", "Clicked!");
}
}
}
この例では、アクティビティの onCreate で、 findViewById メソッドを用いてボタンを取得して、 setOnClickListener で this、すなわちこのアクティビティそのものをクリックリスナーに設定します。
アクティビティクラス内で、 onClick をオーバーライドします。
onClick はクリックされた View (前述のように Button は View から派生しており、 Button "is-a" View です) を受けとります。
getId メソッドで ID を取得できるので、その ID をみて View を識別して適切な処理を行えばよいことになります。
尚、ID として R.id.button1 などとして R クラス経由で ID をひくためには、 ボタンの ID を @id+/button1 と定義すればよいのでしたね。