我在大多数项目中总是使用onclick()
事件。但是,我读到了OnClickListener()
。谁能说出这两者之间有什么区别?哪一个最适合在Android应用程序中使用?
答案 0 :(得分:27)
我不确定问题是否清楚。 View.OnClickListener
是一个接口,用于定义onClick(View)
方法。如果你有一个打算监听点击的类,你应该都实现接口(如果还没有扩展一个类),并实现这个方法。你必须同时使用两者;他们不是某种替代品。
答案 1 :(得分:23)
OnClickListener
是您需要实现的接口,可以在java代码中设置为视图。
最近,android为名为android:onclick
的视图添加了一个xml属性,可以直接在视图的活动中处理点击,而无需实现任何接口。
两者的功能相同,只需通过java代码设置,另一个通过xml代码设置。
答案 2 :(得分:21)
我假设onClick
您使用的是您在XML Layout中定义的那个。这两个是替代的,可以起到相同的作用,但实现方式不同。
XML Layout中带有函数绑定的onClick
是onClick与它将调用的函数之间的绑定。该函数必须有一个参数(View
)才能使onClick正常运行。
OnClickListener
是任何类都可以实现的接口。由于它是任何类都可以实现的接口,因此它具有更大的灵活性和更复杂的形式。使用OnClickListener
OnClickListener
可以将点击事件的动作/行为与触发事件的View
分开。虽然对于简单的情况,这对于复杂的事件处理来说并不是一件大事,但这可能意味着更好的可读性和代码的可维护性OnClickListener
是一个接口,实现它的类在确定处理事件所需的实例变量和方法时具有灵活性。同样,在简单的情况下,这不是什么大问题,但对于复杂的情况,我们不希望将与事件处理相关的变量/方法与触发事件的View代码混淆。答案 3 :(得分:11)
OnClickListener是等待某人实际点击的内容,onclick确定当有人点击时会发生什么
监听器是一个类,onclick是一个方法,这个区别在简单的情况下不是很有用,但如果你想要更复杂,那就更加必要了
答案 4 :(得分:5)
Button button = (Button)findViewById(R.id.buttonId);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Do stuff
}
});
OnClickListener 是一个界面, onClick 是 OnClickListener 的方法。
答案 5 :(得分:0)
我们使用
public void button_onClick_name(View v)
{
-------
}
定义一个类外的方法。 但是要在类中定义组件Click事件,我们使用onclick listener。
答案 6 :(得分:0)
考虑" OnClickListener"作为一个等待用户点击应用按钮的人。 然后你的家伙将执行你的方法 OnClick()。
您必须在xml文件中为您的按钮添加一个id,然后在MainActivity.java文件中为其命名。然后为你的家伙设置一个点击监听器。并添加您的onClick方法。 这就是为什么onClick绑定到View.OnClickListener接口的原因: https://developer.android.com/reference/android/view/View.OnClickListener.html
示例:
Button myButton = (Button)findViewById(R.id.myButton);
myButton.setOnClickListener(new View.OnClickListener(){
@override
public void onClick(View v) {
// your method...
}
}
答案 7 :(得分:0)
您可能希望以编程方式设置OnClickListener
,这有几个原因。首先,如果您想在应用程序运行时更改按钮的行为。您可以完全按照其他方法指向按钮,或者只需设置一个不执行任何操作的OnClickListener
来禁用该按钮。
使用onClick
属性定义侦听器时,视图仅在其主机活动中查找具有该名称的方法。以编程方式设置OnClickListener
允许您从其主机活动以外的其他位置控制按钮的行为。这与Fragments
非常相关,Fragments
始终需要使用OnClickListeners
来控制其按钮,因为它们不是活动,并且不会搜索{{}中定义的侦听器1}}。
答案 8 :(得分:0)
您可以在XML中添加android:onClick="your_method"
属性。
示例:强>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click"
android:onClick="your_method"/>
答案 9 :(得分:0)
我们在xml中使用OnClick
,在OnClickListner
代码中使用java
。两者都用于执行功能。
答案 10 :(得分:0)
当我们想在Java代码中向按钮添加点击监听器时,我们使用OnClickListener
当我们想要在布局文件中向按钮添加点击监听器时,我们使用android:onClick="your_method"
如果您使用XML变体,则必须在app类中实现your_method
。
答案 11 :(得分:0)
有几个原因可能需要以编程方式设置OnClickListener。首先,如果您想在应用程序运行时更改按钮的行为。您可以将按钮完全指向另一个方法,或者通过设置不执行任何操作的OnClickListener来禁用该按钮。
使用onClick属性定义侦听器时,视图仅在其主机活动中查找具有该名称的方法。以编程方式设置OnClickListener允许您从其主机活动以外的某个位置控制按钮的行为。当我们了解基本上是迷你活动的碎片时,这将变得非常重要,允许您使用自己的生命周期构建可重用的视图集合,然后可以将它们组合成活动。片段始终需要使用OnClickListeners来控制它们的按钮,因为它们不是活动,并且不会搜索onClick中定义的侦听器。
答案 12 :(得分:0)
每个人都提到了OnClickListener
一个总是使用的列表器。
我想再添加一个点android:onClick
作为方法,它不需要引用,因此当你必须在执行某个任务后添加按钮时它很有用,所以你不能为OnClickListener
引用它
对于example
当我们创建只包含布局(没有片段)的viewpager时,如果在任何布局中放置一个按钮,只有在布局可见时才进行清理,因此您无法在Button中使用方法findViewById
那个案例android:onClick
变得有用,只需将该方法放入活动!!
答案 13 :(得分:0)
这是一个简单的术语 如果你在家,你想打电话给某人......你可以直接打电话给他们,他们可以听你说话。 (使用onclick)。但是,如果你在外面,你想在家里打电话给某人,你需要使用手机或互联网。(需要使用onclicklistener)。 在Android中,一切都从家里开始,即。主要活动 这是android缓解你工作的方式;当你有一个活动时,你不必附加一个监听器,创建对象,并定义它。只需使用onClick。 Onclicklistener通常用于Fragments中。 所以保持编码。
答案 14 :(得分:0)
您可能希望以编程方式设置OnClickListener
,这有几个原因。首先,如果您想在应用程序运行时更改按钮的行为。您可以完全按照其他方法指向按钮,或者只需设置一个不执行任何操作的OnClickListener
来禁用该按钮。
使用onClick
属性定义侦听器时,视图仅在其主机活动中查找具有该名称的方法。以编程方式设置OnClickListener
允许您从其主机活动以外的某个位置控制按钮的行为。当我们讨论基本上是迷你活动的碎片时,这将变得非常重要,允许您使用自己的生命周期构建可重用的视图集合,然后可以将它们组合成活动。片段总是需要使用OnClickListeners
来控制他们的按钮,因为他们不是活动,也不会搜索onClick
中定义的听众。
答案 15 :(得分:0)
onclick()
和setOnClicklisner()
之间的主要区别如下:
onclick()
是xml中的属性。单击按钮时,onclick
方法被调用,假设您在布局中有三个按钮,则只能添加onclick()
的一个功能,而单击任一按钮时,onclick()
就会被调用
setOnClicklistner()
假设您在布局中有三个按钮要与它们执行不同的操作。然后,您应该在每个按钮上使用setonClicklistner()
方法来为其提供不同的方法