1. ホーム
  2. android

[解決済み] 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 をパラメータとする。