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

标签 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"

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

最佳答案

either way, on your Button you have to do:

android:onClick="onClick"

不,这不是必需的。

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

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

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

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

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


现在,Activity 不需要实现接口(interface)本身,您可以将匿名类监听器单独附加到 View 。

关于android - 如果我们必须设置 android :onClick either way? 为什么我们要实现 View.OnClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40471106/

相关文章:

android - 在 CursorAdapter 中更改光标未正确更新列表项 View

android - 使用 Robolectric 在 Android Studio 中测试应用程序

java - 所有外部类实例总共只有 1 个静态嵌套类实例吗?如果没有单例模式,只能出现 1 个实例吗?

android - 如何在处理 RecyclerView ViewHolders 时删除 OnClickListener?

android - 创建一个与 Facebook SDK 的 `LoginButton` 相同的按钮或覆盖 LoginButton 的 OnClick

android - 如何自定义 float 操作按钮形状?

Android:居中图像

android - android中的onclick监听器

java - 如何创建中间带有单个边框的相邻 Material 按钮

java.lang.NullPointerException : Attempt to invoke interface method 'boolean java.util.List.add(java.lang.Object)' on a null object reference