Android的按钮单击事件及监听器的实现方式
【轉(zhuǎn)自】http://blog.csdn.net/rhljiayou/article/details/7061201【作者】rhljiayou
第一種:匿名內(nèi)部類作為事件監(jiān)聽器類
大部分時候,事件處理器都沒有什么利用價值(可利用代碼通常都被抽象成了業(yè)務(wù)邏輯方法),因此大部分事件監(jiān)聽器只是臨時使用一次,所以使用匿名內(nèi)部類形式的事件監(jiān)聽器更合適,實際上,這種形式是目前是最廣泛的事件監(jiān)聽器形式。上面的程序代碼就是匿名內(nèi)部類來創(chuàng)建事件監(jiān)聽器的!!!
對于使用匿名內(nèi)部類作為監(jiān)聽器的形式來說,唯一的缺點就是匿名內(nèi)部類的語法有點不易掌握,如果讀者java基礎(chǔ)扎實,匿名內(nèi)部類的語法掌握較好,通常建議使用匿名內(nèi)部類作為監(jiān)聽器。
第二種:內(nèi)部類作為監(jiān)聽器
將事件監(jiān)聽器類定義成當(dāng)前類的內(nèi)部類。1、使用內(nèi)部類可以在當(dāng)前類中復(fù)用監(jiān)聽器類,因為監(jiān)聽器類是外部類的內(nèi)部類,2、所以可以自由訪問外部類的所有界面組件。這也是內(nèi)部類的兩個優(yōu)勢。上面代碼就是內(nèi)部類的形式!!
第三種:Activity本身作為事件監(jiān)聽器
這種形式使用activity本身作為監(jiān)聽器類,可以直接在activity類中定義事件處理器方法,這種形式非常簡潔。但這種做法有兩個缺點:(1)這種形式可能造成程序結(jié)構(gòu)混亂。Activity的主要職責(zé)應(yīng)該是完成界面初始化;但此時還需包含事件處理器方法,從而引起混亂。(2)如果activity界面類需要實現(xiàn)監(jiān)聽器接口,讓人感覺比較怪異。
上面的程序讓Activity類實現(xiàn)了OnClickListener事件監(jiān)聽接口,從而可以在該Activity類中直接定義事件處理器方法:onClick(view v),當(dāng)為某個組件添加該事件監(jiān)聽器對象時,直接使用this作為事件監(jiān)聽器對象即可。
第四種:外部類作為監(jiān)聽器
ButtonTest類
當(dāng)用戶單擊button按鈕時,程序?qū)|發(fā)MyButtonListener監(jiān)聽器
外部MyButtonListener類
使用頂級類定義事件監(jiān)聽器類的形式比較少見,主要因為如下兩個原因:
1、事件監(jiān)聽器通常屬于特定的gui界面,定義成外部類不籃球提高程序的內(nèi)聚性。
2、外部類形式的事件監(jiān)聽器不能自由訪問創(chuàng)建gui界面的類中的組件,編程不夠簡潔。
但如果某個事件監(jiān)聽器確實需要被多個gui界面所共享,而且主要是完成某種業(yè)務(wù)邏輯的實現(xiàn),則可以考慮使用外部類的形式來定義事件監(jiān)聽器類。
第五種:直接綁定到標(biāo)簽
Android還有一種更簡單的綁定事件監(jiān)聽器的的方式,直接在界面布局文件中為指定標(biāo)簽綁定事件處理方法。
對于很多Android標(biāo)簽而言,它們都支持如onClick、onLongClick等屬性,這種屬性的屬性值就是一個形如xxx
(View source)
的方法的方法名。在布局文件中為button添加屬性,如一代碼:
為Button按鈕綁定一個事件處理方法:clickHanlder,這意味著開發(fā)者需要在該界面布局對應(yīng)的Activity中定義一個void clickHanler(View source)方法,該方法將會負(fù)責(zé)處理該按鈕上的單擊事件。
下面是該界面布局對應(yīng)的java代碼:
總結(jié)
以上是生活随笔為你收集整理的Android的按钮单击事件及监听器的实现方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何让PHP以root权限执行系统命令
- 下一篇: 高考物理关于运动学的问题