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

是的。它是一个实现接口的匿名类。后面的 onclick 就是 onclick 的实现。

尝试这样做:

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

这可能看起来更清楚。

于 2013-07-11T15:54:08.230 回答