最佳做法android:onClick XML属性或setOnClickListener?

我正在关注Google的Android教程,发现按照标题获得小部件callback有两种方式(或者只有onClick – 我不知道)。

我是一个高级Java Swing开发人员,所以内部类的方法让我有宾至如归的感觉:)但是我明白,xml方法更新 – 所以谷歌必须添加它的原因。

这里的推理是什么? 在android平台上这样做是否“更好”,现在应该避免内部类方法(在支持它的版本上)?

Solutions Collecting From Web of "最佳做法android:onClick XML属性或setOnClickListener?"

我没有使用XML onClick属性,因为这意味着正在使XML膨胀的Activity必须实现onClick值方法。 但是如果你做了一些重构,并且改变了这个方法,那么如果这些改变与XML没有关联的话,你将会得到运行时exception。 或者如果你想使用一些includemerge

添加更多内容:如果使用片段,则必须将click事件委托给定义onClick XML属性的片段。

它确实代码less,但为了维护/重构这样的代码,它使事情变得困难并且容易出错。 所以不要在生产代码中使用它。

您可以通过xml和编程方式定义像button一样的小部件。 可以赋予两种方式添加侦听器的function。 所以相互之间没有优势。

如果你想从XML做布局特定的工作,Android给了你一个这样做的能力。

但有人可能会定义布局,然后将不得不从代码定义点击监听器。

但也有人使用它的混合。

我希望你明白我的意思。

如果你用编程的方式来做,你可以写onClick(),并且写一个switch case,并且基于view id,你可以定义我个人觉得更容易处理的行为。

如果button将始终存在,同样的动作将始终执行,那么使用声明式事件处理程序是有道理的。 就像你甚至不需要为那个button做一个findViewById()

如果你想启用/禁用点击或dynamic生成button等,那么在代码中dynamic设置事件处理程序是有意义的。

View.OnClickListener是一个接口,它定义了onClick(View)方法。

你将在代码中实现接口和方法。