我正在关注Google的Android教程,并发现有两种方法可以根据标题获取小部件回调(或者只有onClick - 我不知道)。
我是一名高级Java Swing开发人员,因此内部类方法让我有宾至如归的感觉:)但我明白xml方法更新 - 所以谷歌必须添加它是有原因的。
这里有什么推理?如果现在避免使用内部类方法(在支持它的版本上),在Android平台上这样做是否“更好”?
答案 0 :(得分:20)
我没有使用XML onClick
属性,因为这意味着膨胀XML的Activity
必须实现onClick值方法。但是,如果您进行了一些重构并且更改了此方法,那么如果更改与XML无关,您将获得运行时异常。或者,如果您想使用某些include
或merge
。
要添加更多内容:如果您使用片段,则必须delegate the click event到定义onClick
XML属性的片段。
确实代码较少,但为了维护/重构这些代码,它会使事情变得困难并且容易出错。所以不要在生产代码中使用它。
答案 1 :(得分:0)
您可以通过xml和编程方式定义按钮等小部件。可以给两个方面添加听众的能力。所以一个人没有优势。
如果你想从xml做特定于布局的工作,那么android已经为你提供了这样做的能力。
但有人可能会按步骤定义布局,然后必须从代码中定义点击监听器。
但也有人混合使用它。
我希望你理解我的意思。
如果以编程方式执行此操作,您可以编写onClick()并编写一个switch case并根据视图ID来定义我个人觉得更容易使用的行为。
答案 2 :(得分:0)
如果按钮总是存在,并且总是会执行相同的操作,那么使用声明性事件处理程序是有意义的。就像你甚至不需要为那个按钮做findViewById()
一样。
如果你想要启用/禁用点击或者可能是动态生成按钮等,那么在代码中动态设置事件处理程序是有道理的。
答案 3 :(得分:-1)
View.OnClickListener
是一个接口,用于定义onClick(View)
方法。
您将在代码中实现接口和方法。