イベントリスナー (イベントハンドラ) とは、ひとつのコールバックメソッドを持つViewクラスのインターフェイスです。
OnClickListenerの登録には、
の2つの方法があります。
コードによる登録には、その実装方法により
の2つがあります。
setOnClickListener()を使用し、OnClickListenerインターフェイスを無名内部クラスとして定義することにより実装します。
Button button = (Button)findViewById(R.id.buttonID);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// クリックの処理を実行する
}
});
View.OnClickListener | Android Developers
public class MyClass extends Activity implements View.OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
Button button = (Button)findViewById(R.id.buttonID);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
//
}
}
Layoutリソースでの定義時にandroid:onClick属性にコールバックメソッドを登録することでも、リスナーを登録できます。
<Button android:onClick="MethodName" />
このときコールバックメソッドはpublicで戻り値を持たず、引数にViewをひとつ持つ次の形式である必要があります。
public void MethodName(View v) {}
new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO
return false;
}
};
new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO
}
};
new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO
return false;
}
};
new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO
return false;
}
};
new View.OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
// TODO
}
};