目的
Buttonクラスのタップイベント(setOnClickListener)のちょい攻略
他にButtonに関するメモがあれば、追記していくとともに、最終的にはButton攻略にしたい。
タップイベントの実装
以下のコードでボタンのタップイベントを取得する。
例としてタップ時にボタンを黒にしている。
final Button button = findViewById(R.id.circlebutton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//背景を黒に
button.setBackgroundColor(Color.BLACK);
}
});
onClick
内でボタンの設定をする場合はfinal
を付けないといけないみたい
タップイベントまとめて管理
管理というと語弊となるかもだけど、タップの処理を一つのクラスにまとめられる方法もある。
場合によっては、可読性が上がると思う。
ライブラリのコードを眺めていて、知った。
//...
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
//....
button = findViewById(R.id.circlebutton);
button.setOnClickListener(this);
//....
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.circlebutton:
button.setBackgroundColor(Color.BLUE);
break;
//case ....
default:
break;
}
}
}
上記のようにimplements View.OnClickListener
としてonClick(View v)
を実装し、switchで押されたボタン毎に場合分けする。
onCreateではsetOnClickListener
の実装のみでタップ時の処理はonClickで書く。
- 一つの画面にボタンを複数個設置している場合
- onCreateでは、setOnClickListenerのみボタン設定を行う
場合に優位かなと思った。
onCreateでsetOnClickListener以外にも、ボタンのtitleやら装飾やらを行なった場合、設定が2箇所になるので、
そうなってしまったら使い勝手微妙かなと思った。