在 xml 中使用 onClick 和在 activity 中使用 button.setOnClickListener 有什么区别?

What are the differences in using onClick in the xml and button.setOnClickListener in the activity?

据我所知,在 android 中有两种实现按钮点击的方法。一种是定义 android:onClick="someFunction",另一种是在 activity 中设置监听器。我想知道的是:

  1. 它们是否相同,是否可以互换使用。
  2. 有什么我可以用一个而不是另一个做的事情吗?有什么限制吗?
  3. 仅凭意见哪个更好?

android:onclick可以直接在view的activity中处理点击,不需要实现任何接口

android:onClick 适用于 API 4 级以上,所以如果你的目标是 < 1.6,那么你不能使用它。

OnClickListener 使您能够将单击事件的操作与触发该事件的视图分开。

你可以参考这个帖子了解更多详情Android onClick in XML vs. OnClickListener

希望对您有所帮助

One is by defining android:onClick="someFunction" and another is by having a listener in the activity.

不完全是。您的选择是:

  1. 使用 android:onClick,指向 activity 中托管此小部件的方法,使用此方法的本机实现(自 Android 1.6)

  2. View 上调用 setOnClickListener(),传入 OnClickListener

  3. 的实现
  4. 使用数据绑定框架tie android:onClick to an arbitrary method or an arbitrary lambda expression

Are they the same and if I can use them interchangeably.

它们是相同的,因为两者都定义了用户单击小部件时要调用的行为。

Are there things I can do with one and not the other? Any limitations?

选项 #1 仅限于在主机 activity 上实施的方法。选项 #2 和选项 #3 不是。有了这些,您可以实现在点击事件上调用的逻辑,作为某些 UI 控制器或演示者的一部分,例如片段。

Is it just up to opinion which is better practice?

好吧,几乎一切都取决于意见。

恕我直言,选项 #1 适用于简单的应用程序,例如书籍示例。选项 #3 是新的但功能强大,我预计这将是长期解决方案。