Androidのボタンにクリックイベントを実装する

2019年3月11日

本稿では、Androidアプリのボタンにクリックイベントを実装する説明します。

 

 

buttonにクリックイベントを実装する方法

buttonにクリックイベントを実装する方法は、下記の2つあります。

  • buttonにonClickListenerを実装する
  • ActivityにonClickListenerを実装する

それぞれどう実装するか見ていきましょう。

 

buttonにonClickListenerを実装する方法

この方法はbutton毎にonClickListenerを実装していきます。

buttonを実装する当該画面にボタンが1つしかないのであれば問題ありませんが、

ボタンが複数ある場合は似たような処理が複数存在してしまうため、保守性が低いコードになっていしまいます。

 

// ボタンにViewを割り当てる
Button buttonA = (Button) findViewById(R.id.button1);
Button buttonB = (Button) findViewById(R.id.button2);
// ボタンAに OnClickListenerを実装する
buttonA.setOnClickListener(new View.OnClickListener() {
    // ボタンAクリック時に呼ばれるメソッド
    @Override
    public void onClick(View view) {
        Toast.makeText(MyActivity.this, "clicked by buttonA!", Toast.LENGTH_LONG).show();
    }
});
// ボタンBに OnClickListenerを実装する
buttonB.setOnClickListener(new View.OnClickListener() {
    // ボタンBクリック時に呼ばれるメソッド
    @Override
    public void onClick(View view) {
        Toast.makeText(MyActivity.this, "clicked by buttonB!", Toast.LENGTH_LONG).show();
    }
})

 

ActivityにonClickListenerを実装する方法

クリックイベントを実装したいbuttonがあるActivityにimplementsでonClickListenerを実装します。

public class MyActivity extends Activity implements View.OnClickListener{
@Override
protected void onCreate(Bundle saveInstanceState) {
    ・・・・
}
// クリック時に呼ばれるメソッド
public void onClick(View view){
    switch (view.getId()) {
        case R.id.button:
            Toast.makeText(MyActivity.this, "click!!!", Toast.LENGTH_LONG).show();
            break;
    }
}

 

ちなみに、ボタンが複数ある場合も下記のようにcase分で分岐すればよいので、

onClickのイベントを管理するのが簡潔になります。

 

public class MyActivity extends Activity implements View.OnClickListener{
@Override
protected void onCreate(Bundle saveInstanceState) {
    ・・・・
}
// クリック時に呼ばれるメソッド
public void onClick(View view){
    switch (view.getId()) {
        case R.id.button1:
            Toast.makeText(MyActivity.this, "clicked by buttonA", Toast.LENGTH_LONG).show();
            break;
        case R.id.button2:
            Toast.makeText(MyActivity.this, "clicked by buttonB", Toast.LENGTH_LONG).show();
            break;
    }
}