22

我正在关注 Google 的 Android 教程,发现有两种方法可以根据标题获取小部件回调(或者只有 onClick - 我不知道)。

我是一名高级 Java Swing 开发人员,所以内部类方法让我有宾至如归的感觉 :) 但我知道 xml 方法较新——所以谷歌添加它一定是有原因的。

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

4

4 回答 4

20

我没有使用 XMLonClick属性,因为这意味着Activity膨胀 XML 的必须实现 onClick 值方法。但是,如果您进行一些重构并更改此方法,那么如果更改与 XML 不相关,您将获得运行时异常。或者,如果您想使用一些includemerge.

添加更多:如果您使用片段,则必须将单击事件委托给定义onClickXML 属性的片段。

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

于 2013-08-16T06:54:52.677 回答
0

您可以通过 xml 和以编程方式定义按钮等小部件。Can 提供了双向添加侦听器的能力。因此,一个比另一个没有优势。

如果您想从 xml 进行特定于布局的工作,android 已经为您提供了执行此操作的能力。

但是有人可能会以编程方式定义布局,然后必须从代码中定义点击监听器。

但也有人混合使用。

我希望你明白我的意思。

如果您以编程方式执行此操作,您可以只编写 onClick() 和 iside 编写一个 switch 案例,并根据视图 ID,您可以定义我个人认为更容易使用的行为。

于 2013-08-16T06:54:46.460 回答
0

如果按钮将始终存在并且将始终执行相同的操作,那么使用声明性事件处理程序是有意义的。就像你甚至不需要findViewById()为那个按钮做 a 一样。

如果您可能想要启用/禁用单击或可能正在动态生成按钮等,那么在代码中动态设置事件处理程序是有意义的。

于 2013-08-16T06:55:40.393 回答
-1

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

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

于 2013-08-16T07:17:02.780 回答