我在大多数项目中总是使用onclick()
事件。但是,我读了OnClickListener()
。谁能说出这两者有什么区别?哪一个最适合在Android应用程序中使用?OnClick()事件和OnClickListener之间的区别?
回答
我不确定问题是否清楚。 View.OnClickListener
是一个接口,它定义了onClick(View)
方法。如果你有一个想听点击的类,你应该实现接口(如果还没有扩展一个类),并且实现这个方法。你必须同时使用;他们不是别的办法。
非常伤心的是,在android中有一个投票环可以正确回答:( – Reno
OnClickListener
是需要实现,并且可以设定为在Java代码视图的接口。
最近,android向视图名为android:onclick
的视图添加了一个xml属性,它可以用来直接处理视图活动中的点击,而无需实现任何接口。
两个功能是相同的,只是一个获得通过java代码集和其它通过XML的代码。
OnClickListener就是等待有人来实际点击,的onclick决定当有人点击
监听器是一个类,的onclick是一个方法会发生什么,这种区别不是简单的情况下非常有用,但如果你想更复杂变得更加必要
+1对于简短的描述.. –
我们使用
public void button_onClick_name(View v)
{
-------
}
定义一个方法了之类的。 但是要定义一个组件单击一个类中的事件,我们使用onclick监听器。
我被你用onClick
假设是,你在XML布局定义的一个。这两个替代方案的功能相同,但实现方式不同。
的
onClick
与功能布局XML绑定的onClick,它会调用函数之间的绑定。该函数必须有一个参数(View
)才能使onClick正常工作。的
OnClickListener
是,任何类都可以实现一个接口。由于它是任何类可以实现的接口,因此它具有更多的灵活性和更复杂的形式。你可以有OnClickListener
- 很少灵活性你可以很容易地换用另一个监听器实现,如果你需要。
- 的
OnClickListener
让您的单击事件的动作/行为与触发事件的View
分开。虽然简单的情况下,这不是什么大不了的,复杂事件处理,这可能意味着该代码 - 由于
OnClickListener
是一个接口,实现它在确定的实例变量和方法的灵活性类的更好的可读性和可维护性它需要处理事件。同样,在简单情况下这不是什么大问题,但对于复杂情况,我们不希望将与事件处理相关的变量/方法与触发事件的View代码混淆在一起。
考虑“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...
}
}
有几个原因,你可能想以编程方式设置的OnClickListener
。首先,如果您想在应用程序运行时更改按钮的行为。您可以在另一种方法完全指向您的按钮,或者只是通过设置OnClickListener
不会做任何禁用按钮。
当您使用onClick
属性定义侦听器时,该视图仅在其主机活动中查找具有该名称的方法。编程设定的OnClickListener
允许您控制从比它的主机活动之外的其他地方按钮的行为。这将变得非常相关Fragments
,Fragments
总是需要使用OnClickListeners
来控制他们的按钮,因为他们不是活动,并且不会搜索在onClick
中定义的听众。
Button button = (Button)findViewById(R.id.buttonId);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Do stuff
}
});
OnClickListener是一个接口和的onClick是OnClickListener方法。
您可以在XML中添加android:onClick="your_method"
属性。
例子:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click"
android:onClick="your_method"/>
我们java
代码使用XML OnClick
和OnClickListner
。两者都用于执行功能。
当我们想要在Java代码中添加点击监听器到按钮时,我们使用OnClickListener
。
当我们要点击监听器添加到按钮布局文件,我们使用android:onClick="your_method"
如果使用XML变种,你必须在你的应用类中实现your_method
。
有几个原因可能会导致您想要以编程方式设置OnClickListener。首先,如果您想在应用程序运行时更改按钮的行为。你可以完全将你的按钮指向另一个方法,或者通过设置一个没有任何作用的OnClickListener来禁用按钮。
当您使用onClick属性定义侦听器时,视图仅在其主机活动中查找具有该名称的方法。通过以编程方式设置OnClickListener,您可以从其主机活动以外的某个位置控制按钮的行为。当我们了解碎片时,这将变得非常相关,碎片基本上是迷你活动,允许您在自己的生命周期中构建可重用的视图集合,然后将它们组合到活动中。片段始终需要使用OnClickListeners来控制它们的按钮,因为它们不是活动,并且不会搜索onClick中定义的监听器。
大家都提到过关于OnClickListener
listner哪一个总是用的。 我想添加一个点作为方法作品,它不需要引用,所以当你需要添加按钮后,你需要添加按钮,所以你不能引用它为OnClickListener
。
对于example
当我们创建viewpager只布局(无碎片),如果你在任何布局把一个按钮,它只有insialized布局时可见的,所以你不能在becomed有用这种情况下使用方法findViewById
的按钮只是把该方法在活动中!
这里是简单的术语 如果你在家里,你想给别人打电话..你可以直接打电话,他们可以听你的。 (使用onclick)。但是,如果你在外面,你想在家里打电话,你需要使用手机或互联网(需要使用onclicklistener)。在Android中,一切都从家中开始,也就是说, main_activity 这是android减轻你工作的方式;当你有一个活动时,你不必附加一个监听器,创建对象并定义它。只需使用onClick。 Onclicklistener通常用于碎片。 所以保持编码。
- 1. onClickListener和onItemClickListener之间的区别
- 2. OnTouchListener和OnClickListener之间的区别
- 3. JSF:ViewActions和preRender事件之间的区别
- 4. 事件和方法之间的区别
- 5. LinkLabel.Click和LinkLabel.LinkClicked事件之间的区别?
- 6. onclick()和.on('click',function())之间的区别?
- 7. 按钮onclick和href之间的区别
- 8. 使用ID和onClick之间的区别
- 9. onclick()和onClientClick()之间的区别?
- 10. OnTouch和OnClick Android之间的区别
- 11. JS onclick和jQuery之间的区别.click
- 12. “DOMContent事件”和“加载事件”之间的区别
- 13. 事务和TransactionScope之间的区别
- 14. 事件与delegateEvents之间的区别?
- 15. Visual Studio中的KeyDown事件,KeyPress事件和KeyUp事件之间的区别
- 16. Laravel 5.1:事件和邮件之间的区别:队列?
- 17. 之间的〜/和的区别../
- 18. '#','%'和'$'之间的区别
- 19. {!!之间的区别!!}和{{}}
- 20. '+ ='和'= +'之间的区别?
- 21. “。+”和“。+?”之间的区别
- 22. .eq之间的区别。和==
- 23. #。/和#之间的区别。 ./
- 24. !=和!之间的区别==
- 25. “%〜dp0”和“。\”之间的区别?
- 26. | =和^ = css之间的区别
- 27. 之间的区别。和#
- 28. ==和case之间的区别?
- 29. “**/* /”和“** /”之间的区别?
- 30. jQuery - '。'之间的区别和“#”
您接受了错误的答案。肖恩欧文或userSeven7s是正确的。 – Reno
[android:onClick XML属性与setOnClickListener有什么不同?](http://stackoverflow.com/questions/4153517/how-exactly-does-the-androidonclick-xml-attribute-differ-from- setonclicklistener) –