zoukankan
html css js c++ java
Android的按钮单击事件及监听器的实现方式
第一种:匿名内部类作为事件监听器类
<ignore_js_op>
大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适,实际上,这种形式是目前是最广泛的事件监听器形式。上面的程序代码就是匿名内部类来创建事件监听器的!!!
对于使用匿名内部类作为监听器的形式来说,唯一的缺点就是匿名内部类的语法有点不易掌握,如果读者java基础扎实,匿名内部类的语法掌握较好,通常建议使用匿名内部类作为监听器。
第二种:内部类作为监听器
<ignore_js_op>
将事件监听器类定义成当前类的内部类。1、使用内部类可以在当前类中复用监听器类,因为监听器类是外部类的内部类,2、所以可以自由访问外部类的所有界面组件。这也是内部类的两个优势。上面代码就是内部类的形式!!
第三种:Activity本身作为事件监听器
<ignore_js_op>
这种形式使用activity本身作为监听器类,可以直接在activity类中定义事件处理器方法,这种形式非常简洁。但这种做法有两个缺点:(1)这种形式可能造成程序结构混乱。Activity的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱。(2)如果activity界面类需要实现监听器接口,让人感觉比较怪异。
上面的程序让Activity类实现了OnClickListener事件监听接口,从而可以在该Activity类中直接定义事件处理器方法:onClick(view v),当为某个组件添加该事件监听器对象时,直接使用this作为事件监听器对象即可。
第四种:外部类作为监听器
ButtonTest类
<ignore_js_op>
当用户单击button按钮时,程序将会触发MyButtonListener监听器
外部MyButtonListener类
<ignore_js_op>
使用顶级类定义事件监听器类的形式比较少见,主要因为如下两个原因:
1、事件监听器通常属于特定的gui界面,定义成外部类不篮球提高程序的内聚性。
2、外部类形式的事件监听器不能自由访问创建gui界面的类中的组件,编程不够简洁。
但如果某个事件监听器确实需要被多个gui界面所共享,而且主要是完成某种业务逻辑的实现,则可以考虑使用外部类的形式来定义事件监听器类。
第五种:直接绑定到标签
Android还有一种更简单的绑定事件监听器的的方式,直接在界面布局文件中为指定标签绑定事件处理方法。
对于很多Android标签而言,它们都支持如onClick、onLongClick等属性,这种属性的属性值就是一个形如xxx
(View source)
的方法的方法名。在布局文件中为button添加属性,如一代码:
<ignore_js_op>
为Button按钮绑定一个事件处理方法:clickHanlder,这意味着开发者需要在该界面布局对应的Activity中定义一个void clickHanler(View source)方法,该方法将会负责处理该按钮上的单击事件。
下面是该界面布局对应的java代码:
<ignore_js_op>
7.gif
(9.72 KB, 下载次数: 47)
下载附件
保存到相册
2011-12-11 18:22 上传
Android的按钮单击事件及监听器的实现方式
查看全文
相关阅读:
奇虎董事长周鸿祎:谁说没钱不能创业
分析.NET基础库源码,学习Stream类及相关类
Why need two IF in singleton pattern in the multiple threads scenario
It's bad design that leveraging singleton design pattern in db connection
Asp.net mvc 3 JSONResult return array
System.Web.HttpContext.Current vs. ControllerContext.HttpContext (almost the same)
Nhibernate HQL example paging and avoid sql injection
Asp.net mvc 3 JSON complext object mapping
Nhibernate configuration in app.config with log4net enabled 0 of 4
Setup and run a simple nhibernate example
原文地址:https://www.cnblogs.com/x38160/p/3292922.html
最新文章
POJ 2452 Sticks Problem
hdu 1045 Fre Net
hdu 1077 Catching Fish
POJ 1062 昂贵的礼物
山东省2012年第三届省赛之Fruit Ninja II
POJ 1011 Sticks
POJ 1328 Radar Installation
POJ 1410 Intersection
POJ 1113 Wall
POJ 1459 Power Network
热门文章
hdu 1045 Fire Net二分匹配
HttpServlet一个典型的例子-没有乱码
DotNet for Symbian平台实战
MyEclipse安装及破解 JDK 6 + TOMCAT 6 + Eclipse 3.3 + Myeclipse 6.0 安装 破解
既然做AJAX, 向大家推荐一些工具和方法
世界上最冷的脑筋急转弯!笑了就顶下吧
MyEclipse + Tomcat + SQLServer开发JSP网站,初级配置及介绍!
SharpDevelop开发Asp.net
Myeclipse 6.0.1高速下载,支持eclipse3.3.1
VSS 6 admin用户的密码破解
Copyright © 2011-2022 走看看