我在大多數項目中總是使用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) –