• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Android/OnClickListener)

Android/OnClickListenerについての疑問

このQ&Aのポイント
  • Androidアプリでのユーザーインターフェースの処理において、View.OnClickListenerインターフェイスを実装する必要性がわかりません。
  • ViewクラスのonClickメソッドを呼び出すためには、Viewクラスを継承すればよいのではないかと思いますが、なぜView.OnClickListenerインターフェイスを実装する必要があるのでしょうか?
  • また、ViewクラスsetOnClickListenerメソッドの引数のView.OnClickListener lの意味を教えてください。lは何を指していますか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#161640
noname#161640
回答No.1

>「View.OnClickListenerインターフェイス」をimplementsする必要性が理解できません。 implementsしないと、クリックイベントがButttonに渡されないからです。 >最終的に、ViewクラスonClickメソッドを呼び出すのであれば、 >Viewクラスを継承すれば良いと思うのですが、 Viewに、onClickなどというイベント用メソッドはありません。 このonClickがあるのは、まさしくimplementsしたView.OnClickListenerの中です。 つまり、View.OnClickListenerをimplementsしたからこそ、クリックしたときにonClickが呼び出されるようになったのです。implementsしていなかったら、クリックしても何も起こりません。「クリックした」というイベントが素通りしてしまうので。 コンポーネント類は、基本的に初期状態では「何のイベントも認識しない」のです。このコンポーネントに、イベントリスナーを追加すると、そのイベントをコンポーネントが受け取れるようになります。 >この引数(View.OnClickListener l)の意味を教えてください。 おっしゃるように、引数に渡せるのはView.OnClickListener「として扱えるインスタンス」のみ、ということです。 thisは、implements OnClickListenerしていますから、OnClickListenerインスタンスとして振る舞うことができます。

re999
質問者

お礼

回答ありがとうございました >Viewに、onClickなどというイベント用メソッドはありません。 >このonClickがあるのは、まさしくimplementsしたView.OnClickListenerの中です 勘違いしていました >引数に渡せるのはView.OnClickListener「として扱えるインスタンス」のみ、ということです >thisは、implements OnClickListenerしていますから、OnClickListenerインスタンスとして振る舞うことができます 説明分かりやすかったです

その他の回答 (1)

  • LOHA
  • ベストアンサー率52% (203/388)
回答No.2

>インターフェイスについて教えてください。 いわゆるポリモーフィズムという概念ですね。 ポリモーフィズム、継承、インターフェースとかのキーワードでググれば解説がわんさか出てくると思います。 >最終的に、ViewクラスonClickメソッドを呼び出すのであれば、 >Viewクラスを継承すれば良いと思うのですが、 命名が若干紛らわしいですが、ViewクラスにonClickというメソッドは定義されていないと思います。 なので、継承してonClickメソッドを定義しても、新しくonClickを定義しただけでしかなく、何も起きません。 >どうして、「View.OnClickListenerインターフェイス」をimplementsするのでしょうか? implementsしてリスナーを登録するというのはGUIではよく使われる定石です。 >l って何ですか? Listenerの頭文字の"l"じゃないですかね。まぁタダの変数名です。 #最初1と空目した…。

re999
質問者

お礼

回答ありがとうございました >いわゆるポリモーフィズムという概念ですね。 >ポリモーフィズム、継承、インターフェースとかのキーワードでググれば解説がわんさか出てくると思います アドバイスありがとうございます。キーワードが分かったので調べやすかったです >ViewクラスにonClickというメソッドは定義されていないと思います 勘違いしていました… >implementsしてリスナーを登録するというのはGUIではよく使われる定石です 定石なんですね。情報ありがとうございます。知りませんでした… >Listenerの頭文字の"l"じゃないですかね。まぁタダの変数名です 改めてリファレンス見たら、例えば、「View v」とか書いてある箇所とかも、何か特別な意味があるのかと思っていたのですが、単純に頭文字取っているだけなんですね。参考になりましたー

関連するQ&A