在XML文件中编写onClick()与在Java文件中使用onClick函数编写侦听器有什么区别?
在Android中,您可以编写按钮,例如在XML文件中编写onClick()与在Java文件中使用onClick函数编写侦听器有什么区别?,java,android-studio,Java,Android Studio,在Android中,您可以编写按钮,例如onClick()函数并将函数链接到它。但大多数时候,我看到人们没有这样做,而是在Java文件中的按钮上激活了onClickListener。 为什么?两者之间有什么区别?是否存在不允许您使用其中一个的情况?从功能上讲,您可以使用其中一个,并且它们都可以做相同的事情。您使用哪种代码没有限制,但是许多开发人员会喜欢使用Java代码,因为它更灵活,允许您在需要时添加更多功能。有时您可能会看到人们在XML文件中添加一个非常基本的方法调用,然后链接到一个Java方
onClick()
函数并将函数链接到它。但大多数时候,我看到人们没有这样做,而是在Java文件中的按钮上激活了onClickListener
。为什么?两者之间有什么区别?是否存在不允许您使用其中一个的情况?从功能上讲,您可以使用其中一个,并且它们都可以做相同的事情。您使用哪种代码没有限制,但是许多开发人员会喜欢使用Java代码,因为它更灵活,允许您在需要时添加更多功能。有时您可能会看到人们在XML文件中添加一个非常基本的方法调用,然后链接到一个Java方法来完成他们所需要的一切
总而言之,这只是一个偏好和编码风格的问题。从功能上讲,您可以使用其中任何一种,它们都可以做相同的事情。您使用哪种代码没有限制,但是许多开发人员会喜欢使用Java代码,因为它更灵活,允许您在需要时添加更多功能。有时您可能会看到人们在XML文件中添加一个非常基本的方法调用,然后链接到一个Java方法来完成他们所需要的一切
总之,这只是偏好和编码风格的问题。简短解释: 通过xml的
onClick
有助于代码中的fixed
实现,但使用OnClickListener
更适合于具有多个UI元素或复杂UI流的复杂应用程序结构,但两者的作用完全相同
详细说明:
通过布局设置onClick
时,由setContentView
将此属性传递给受尊重的视图构造函数&由视图代码管理
但是通过使用OnClickListener
,当涉及到复杂的应用程序结构时,您可以改变单击事件管理控件的行为
下面是onClick
属性的内部实现的快照
case R.styleable.View_onClick:
if (context.isRestricted()) {
throw new IllegalStateException("The android:onClick attribute cannot "
+ "be used within a restricted context");
}
final String handlerName = a.getString(attr);
if (handlerName != null) {
setOnClickListener(new DeclaredOnClickListener(this, handlerName));
}
内部实现本身使用的是setOnClickListener
,因此两者都是相同的,
正如我前面提到的,只有当应用程序很简单时才使用xml onClick选项,否则就使用Listener。简短说明: 通过xml的
onClick
有助于代码中的fixed
实现,但使用OnClickListener
更适合于具有多个UI元素或复杂UI流的复杂应用程序结构,但两者的作用完全相同
详细说明:
通过布局设置onClick
时,由setContentView
将此属性传递给受尊重的视图构造函数&由视图代码管理
但是通过使用OnClickListener
,当涉及到复杂的应用程序结构时,您可以改变单击事件管理控件的行为
下面是onClick
属性的内部实现的快照
case R.styleable.View_onClick:
if (context.isRestricted()) {
throw new IllegalStateException("The android:onClick attribute cannot "
+ "be used within a restricted context");
}
final String handlerName = a.getString(attr);
if (handlerName != null) {
setOnClickListener(new DeclaredOnClickListener(this, handlerName));
}
内部实现本身使用的是setOnClickListener
,因此两者都是相同的,
正如我前面提到的,只有当应用程序很简单时才使用xml onClick选项,否则就使用Listener。根据我的个人经验,在代码中声明
onClick
listeners,使其更具可读性-您可以轻松地检查从何处调用处理方法,然而,当处理方法仅在XML中设置时,Android Studio甚至会将该方法标记为未使用。根据我的个人经验,在代码中声明onClick
侦听器,使其更具可读性-您可以轻松检查从何处调用处理方法,而当处理方法仅在XML中设置时,Android Studio甚至会将该方法标记为未使用。