5

ここにコードがあります

btn.setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
    //...
  }
});

次のようになりsetOnClickListenerます。

public void setOnClickListener(android.view.View.OnClickListener l) { /* compiled code */ }

しかし、new View.OnClickListener()それ自体は何ですか?これはインターフェースであることがわかります:

//View.class
public static interface OnClickListener {
    void onClick(android.view.View view);
  }

つまり、ここでbtn.setOnClickListener(new View.OnClickListener() ....インターフェイスのインスタンスを作成します。いいえ、これはこのインターフェースを実装するクラスのインスタンスではありません。

インターフェイスのインスタンスを作成するにはどうすればよいですか?

4

1 に答える 1

4

はい、そうです。インターフェイスを実装するのはAnonymous クラスです。後に続く onclick は、onclick の実装です。

次のようにしてみてください。

View.OnClickListener listener=new View.OnClickListener() {
  public void onClick(View v) {
    //...
  }
};
btn.setOnClickListener(listener);

これはより明確に見えるかもしれません。

于 2013-07-11T15:54:08.230 に答える