[Android] Button のonClickListenerの設定が色々できる件

ButtonのsetOnClickListenerですが、匿名クラスを使ったりと色々やり方があるようです。それぞれ良し悪しが個々の状況によってあると思います。すぐに使えるように確認して見ました。

Android Studio 2.1.3
Android 7.0

 

sponsored link

Button onClickListner

 
このサイトでのButton Clickのリスナーは匿名クラスを多用していますが、他にも方法があります。規模が大きなprojectになれば使い方も変えた方がメンテナンスしやすくなります。

  1. 匿名クラス
  2. 変数でまとめる
  3. OnClickListener を implementsして onClick を定義
  4. カスタムクラスを作成
  5. android:onClick

 

 

匿名クラス

 
GoogleのReferenceに紹介されているやり方で、メソッド内でクラスを定義する匿名(無名)クラスを使います。ボタンが1、2個であればこれで済ませることが多いですね。
MainActivity.java

 
activity_main.xml

 

 

変数でまとめる

 
正直なところこの方法はこれが1文なので長ったらしいしごちゃごちゃする、最後の;を忘れることが多いですね。

単純に見やすくするには、これを変数に置き換えてしまうやり方があります
MainActivity.java

 
レイアウトは同じです。
 

 

OnClickListener を implementsして onClick を定義

 
匿名クラスとしない場合はどうするかというと、OnClickListenerをimplementsします。するとpublic void onClick(View view){}というメソッドを作るようにように要求されます。

MainActivity.java

 

activity_main.xml

 
ボタンクリックでの処理を1か所にまとめられるので可読性が上がるかもしれません。
 

 

カスタムクラスを作成

 
メソッドでクリックを受けていますが、カスタムクラスにしてしまうこともできます。その場合は、OnClickListenerを継承したクラスとします。

MainActivity.java

activity_main.xml

 

 

android:onClick

 
XMLレイアウトの中でandroid:onClickを定義してメソッドを実行させるケースです。これもGoogleのReferenceで紹介されています。
 

 

activity_main.xml

 
ActivityのコードにはButtonのインスタンスもありません、これが気持ち悪いと感じるかどうかです。Fragmentではうまくつかえるのでしょうか…

 
 
References:
Button

関連ページ: