[解決済み] Android setOnClickListenerメソッド - どのように動作するのですか?
2022-03-04 22:06:48
質問
このコードを理解するのに苦労しています。私はそれを得る
findViewById
は、ボタンウィジェットを取得し、それをキャストします。そして、そのボタンから
setOnClickListener
メソッドを使用します。しかし、その引数が何に渡されているのかがわかりません。
setOnClickListener
というようなコードは見たことがありません。新しいオブジェクトを作るのに、他のメソッドの引数の中に自分のメソッドを作ることができるのはどうしてでしょうか?どなたか説明していただけると幸いです。また、どのようなタイプのオブジェクトが
setOnClickListener
メソッドが取り込んでいるのでしょうか?
btn = (Button)findViewById(R.id.firstButton);
btn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
tv.setText(months[rand.nextInt(12)]);
tv.setTextColor(Color.rgb(rand.nextInt(255)+1, rand.nextInt(255)+1, rand.nextInt(255)+1));
}
});
解決方法は?
このように動作します。View.OnClickListenereが定義されています。
public interface OnClickListener {
void onClick(View v);
}
私たちの知る限り、オブジェクトをインスタンス化することはできません。
OnClickListener
メソッドが実装されていないためです。つまり、2つの方法があります。
onClick
メソッドはこのようになります。
public class MyListener implements View.OnClickListener {
@Override
public void onClick (View v) {
// your code here;
}
}
しかし、クリックリスナーを設定したいので、その都度やるのは面倒です。そこで、これを避けるために、例のように、その場でメソッドの実装を提供することができます。
setOnClickListener
取る
View.OnClickListener
をパラメータとする。
関連
-
[解決済み】Android: Intent エラーを処理するアクティビティは見つかりませんでしたか?どのように解決するのか
-
[解決済み] Android Fragment onAttach() 非推奨
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] リンクのように動作するHTMLボタンを作成する方法
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] AndroidのListViewで画像を遅延ロードする方法
-
[解決済み] EclipseのAndroidプラグインで "Debug certificate expired "エラーが発生する。
-
[解決済み] Androidで画面の大きさをピクセル単位で取得する方法
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】シンボル 'AppCompatActivity' を解決できない。
-
[解決済み】Android Studioでマニフェストのマージに失敗し、複数のエラーが発生した。
-
[解決済み】レンダリングの問題 レンダリング中に発生した例外:com/android/util/PropertiesMap [重複].
-
[解決済み】Android Studio。adbバージョン」の結果を取得できない
-
[解決済み】ビューのルートとしてNULLを渡さないようにする(膨張したレイアウトのルート要素でレイアウトパラメータを解決する必要がある)。
-
[解決済み】Android Studioでused import文がunused import文に指定されるのはなぜ?
-
[解決済み】Bluestackの向きを変更する : ポートレート/ランドスケープモード
-
[解決済み】Android Studio。Android.support.design.widget.FloatingActionButton クラスを膨らませるのにエラーが発生する。
-
[解決済み] BIOSのセキュリティ設定でVT-xを有効にする(お使いのコンピュータのドキュメントを参照)。
-
[解決済み] setBackgroundDrawable() 非推奨