如果我们必须设置android:onClick,为什么我们实现View.OnClickListener?

时间:2016-11-07 17:31:38

标签: android onclicklistener android-button

修改:不,对于给定的链接,这不是重复,要求对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"

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

1 个答案:

答案 0 :(得分:3)

  

无论哪种方式,你必须在你的按钮上执行:

android:onClick="onClick"

不,这不是必需的。

我认为你可能会倒退。通过android:onClick="onClick"需要在引号中使用该名称的public void方法。

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

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

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

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

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