大きく分けると2種類
状態:作業中
閲覧数:3,548
投稿日:2013-05-11
更新日:2013-05-16
A.OnClickListenerインターフェイスを継承する方法
B.OnClickListenerのインスタンスを生成する方法
1.リスナクラスを定義
2.既存のクラスにインターフェイスを実装
3.匿名クラス1 … setOnClickListenerメソッド内で匿名クラス利用
4.匿名クラス2 … setOnClickListenerメソッドから呼び出す、新たなメソッド内で匿名クラス利用
B.OnClickListenerのインスタンスを生成する方法
詳細に分けると、4種類
1.リスナクラスを定義
2.既存のクラスにインターフェイスを実装
3.匿名クラス1 … setOnClickListenerメソッド内で匿名クラス利用
4.匿名クラス2 … setOnClickListenerメソッドから呼び出す、新たなメソッド内で匿名クラス利用
一覧
大別 | 詳細 | |
---|---|---|
1 | OnClickListenerインターフェイスを継承する方法 | 1.リスナクラスを定義 |
2 | 同上 | 2.既存のクラスにインターフェイスを実装 |
3 | OnClickListenerのインスタンスを生成する方法 | 3.匿名クラス1 |
4 | 同上 | 4.匿名クラス2 |
1.リスナクラスを定義
特徴
・OnClickListener の実装をきちんと定義
コード例
・private なインナークラスとして実装
package android.style;
import android.style.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class HelloAndroid4_0 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// ボタンオブジェクトの取得
Button bt = (Button)findViewById(R.id.button1);
// クリックリスナーの登録
bt.setOnClickListener(new ShowClickButton());
}
// ボタンクリック時に呼ばれるメソッド
private class ShowClickButton implements OnClickListener {
public void onClick(View view) {
TextView tview = (TextView)findViewById(R.id.textView1);
tview.setText("ボタンが押されましたよ");
}
};
}
2.既存のクラスにインターフェイスを実装
特徴
1.自分自身にインターフェイスを実装
2.OnClickListener 引数に this を指定
3.実装クラスで、onClickメソッドをオーバーライド
1.自分自身にインターフェイスを実装
2.OnClickListener 引数に this を指定
・ここでのthisは「OnClickListenerインターフェイスを実装したユーザ作成クラス」の意味
3.実装クラスで、onClickメソッドをオーバーライド
・「View.OnClickListener」インターフェイスはボタンクリックイベントに対応したonClickメソッドを持つため、実装クラスではこのメソッドをオーバーライド
implements OnClickListener
・「import android.view.View.OnClickListener;」している場合は「implements OnClickListener」だが、importしない場合は下記と同義
implements android.view.View.OnClickListener
コード例
・this=「OnClickListenerインターフェイスを実装したユーザ作成クラス」を、ボタンオブジェクトのsetOnClickListenerメソッドに渡すことで、クリックイベントが発生した際にオーバーライドしたメソッドが呼び出される
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class HelloAndroid4 extends Activity implements OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// ボタンオブジェクトの取得
Button bt = (Button)findViewById(R.id.button1);
// クリックリスナーの登録
bt.setOnClickListener(this);
}
// ボタンクリック時に呼ばれるメソッド
public void onClick(View view) {
TextView tview = (TextView)findViewById(R.id.textView1);
tview.setText("ボタンが押されました");
}
}
3.匿名クラス1 … setOnClickListenerメソッド内で匿名クラス利用
特徴
・setOnClickListener を呼ぶ度毎に、「OnClickListenerインターフェイス」インスタンス生成
コード例
package android.style;
import android.style.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class HelloAndroid5 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// ボタンオブジェクトの取得
Button bt = (Button) findViewById(R.id.button1);
// クリックリスナーの登録
bt.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
TextView tview = (TextView)findViewById(R.id.textView1);
tview.setText("ボタンが押されました");
}
});
}
}
4.匿名クラス2 … setOnClickListenerメソッドから呼び出す、新たなメソッド内で匿名クラス利用
特徴
・インスタンス生成は1度きり
・メンバ変数に OnClickListener への参照を持たせておく
・クリックしたときの処理が複雑で長くなる場合に便利(処理を別途「private final」以下に切り出すため)
・別々のボタンに同じ処理を持たせたい場合に便利(処理を別途「private final」以下に切り出すため)
コード例
package android.style;
import android.style.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class HelloAndroid5_2 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// ボタンオブジェクトの取得
Button bt = (Button) findViewById(R.id.button1);
// クリックリスナーの登録
bt.setOnClickListener(showClickButton);
}
private final OnClickListener showClickButton = new OnClickListener() {
public void onClick(View v) {
TextView tview = (TextView)findViewById(R.id.textView1);
tview.setText("ボタンが押されました");
}
};
}