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

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

Android Studio 3.4.2
API 29
AndroidX



Button onClickListner

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

button onclick 02 - [Android] Button のonClickListenerの設定が色々できる件

 

匿名クラス

 
Googleの Button 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ではうまくつかえるのでしょうか…

 

5種類のButton Click

 
この5種類をテストするコードを書いてみました。
MainActivity.java

 
リソース
strings.xml

 

 
 
References:
Button

関連ページ:

誤字脱字、意味不明で分からにゃイ、
などのご意見はこちらから mailフォーム

ブックマークしておくと便利です このエントリーをはてなブックマークに追加




アプリ開発が上達するお勧め

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンラインのプログラミングスクールがいいでしょう、時間の制約がないところが一番の魅力です。

以下の3つはAndroidが学習できるオンラインスクールです。


TECH ACADEMY
Androidアプリコース



侍エンジニア塾
侍エンジニア塾 無料体験レッスン



CodeCamp
~約8,000名の受講生と80社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp





正直ネットや本では限界があります。直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。

尚、スクールがダメだと言う人がいますが、やる気があれば問題ありません。与えられるのを待っていてはいけないですね
欲しいものは取りに行くのです。


Google Pixel 3 XLグローバル版
SIMフリー 並行輸入品
6.3インチの大画面
背景をぼかすポートレートモード撮影


Anker PowerCore II Slim 10000
Power IQ 2.0搭載
iPhone & Android対応

シェアする

  • このエントリーをはてなブックマークに追加

フォローする