如果我们必须以任何一种方式设置 android:onClick,为什么我们要实施 View.OnClickListener?

Why do we implement View.OnClickListener if we can have to set android:onClick either way?

编辑: 不,这不是重复给定的 link 要求比较 setOnClickListenerandroid:onClick。我 甚至没有要求比较 ,但我想问的是实施 View.OnClickListener.

的优势

重开请自由投票


很多人喜欢使用

public class TrumpLocator extends Clinton implements View.onClickListener{
  @Override
  public void onClick(View v){
      //...
   }
}

但是,如果我没记错的话,无论哪种方式,在您的 Button 上您都必须这样做:

android:onClick="onClick"

但是,如果我没记错的话,如果我们不覆盖 onClick 并实现 View.onClickListener,我们将达到相同的效果:

//no override and no "implements onClickListener"
public void onClick(View v){
  //...
}

android:onClick="onClick"

那么,与简单地应用点击侦听器相比,实施该方法有什么优势吗?不就是浪费代码吗?

either way, on your Button you have to do:

android:onClick="onClick"

不,这不是必需的。

我想你可能搞反了。通过使用 android:onClick="onClick",您 需要 一个 public void 方法,并在引号中包含该名称。

public void onClick(View v){
  //...
}

这与实现接口类似,但不完全相同。换句话说,也可以是android:onClick="handleClick",那么你需要

public void handleClick(View v){
  //...
}

人们可能不喜欢这个,因为它会导致拼写错误和点击监听器附加位置的不确定性。


现在,Activity 不需要自己实现接口,您可以将匿名 class 侦听器单独附加到视图。