文档章节

Android的按钮单击事件及监听器的实现方式

 杨勇汉
发布于 2015/02/01 14:04
字数 943
阅读 20
收藏 0

第一种:匿名内部类作为事件监听器类


大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适,实际上,这种形式是目前是最广泛的事件监听器形式。上面的程序代码就是匿名内部类来创建事件监听器的!!!

对于使用匿名内部类作为监听器的形式来说,唯一的缺点就是匿名内部类的语法有点不易掌握,如果读者java基础扎实,匿名内部类的语法掌握较好,通常建议使用匿名内部类作为监听器。

第二种:内部类作为监听器


将事件监听器类定义成当前类的内部类。1、使用内部类可以在当前类中复用监听器类,因为监听器类是外部类的内部类,2、所以可以自由访问外部类的所有界面组件。这也是内部类的两个优势。上面代码就是内部类的形式!!

第三种:Activity本身作为事件监听器


这种形式使用activity本身作为监听器类,可以直接在activity类中定义事件处理器方法,这种形式非常简洁。但这种做法有两个缺点:(1)这种形式可能造成程序结构混乱。Activity的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱。(2)如果activity界面类需要实现监听器接口,让人感觉比较怪异。

上面的程序让Activity类实现了OnClickListener事件监听接口,从而可以在该Activity类中直接定义事件处理器方法:onClick(view v),当为某个组件添加该事件监听器对象时,直接使用this作为事件监听器对象即可


第四种:外部类作为监听器

ButtonTest类


当用户单击button按钮时,程序将会触发MyButtonListener监听器

外部MyButtonListener类


使用顶级类定义事件监听器类的形式比较少见,主要因为如下两个原因:

1、事件监听器通常属于特定的gui界面,定义成外部类不篮球提高程序的内聚性。

2、外部类形式的事件监听器不能自由访问创建gui界面的类中的组件,编程不够简洁。

但如果某个事件监听器确实需要被多个gui界面所共享,而且主要是完成某种业务逻辑的实现,则可以考虑使用外部类的形式来定义事件监听器类。

第五种:直接绑定到标签

Android还有一种更简单的绑定事件监听器的的方式,直接在界面布局文件中为指定标签绑定事件处理方法。

对于很多Android标签而言,它们都支持如onClick、onLongClick等属性,这种属性的属性值就是一个形如xxx

(View source)

的方法的方法名。

在布局文件中为button添加属性,如一代码:

为Button按钮绑定一个事件处理方法:clickHanlder,这意味着开发者需要在该界面布局对应的Activity中定义一个void clickHanler(View source)方法,该方法将会负责处理该按钮上的单击事件。

下面是该界面布局对应的java代码:



如果转载请注明作者和出处!!!!

本文转载自:http://blog.csdn.net/rhljiayou/article/details/7061201

粉丝 2
博文 69
码字总数 0
作品 0
东城
私信 提问
Android事件监听器的实现方式

第一种:匿名内部类作为事件监听器类 大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形...

zjupure
2013/11/16
1K
1
Button 按钮

按钮是程序中最常见的一个元素,我们通过一个例子感受一下,代码的讲解都写在注释里了,所以我就直接上代码和代码的运行结果。 package android.basic.lesson9; import android.app.Activity...

长平狐
2012/08/21
435
0
Button 按钮

按钮是程序中最常见的一个元素,我们通过一个例子感受一下,代码的讲解都写在注释里了,所以我就直接上代码和代码的运行结果。 package android.basic.lesson9; import android.app.Activity...

长平狐
2012/08/09
322
0
ListView自定义视图中对Button按钮实现仅允许一个按钮处于开启状态

Android项目迭代,之前使用下拉框Spinner被替换成ListView,相应的实现也比之前更加复杂了,根据美工给出的界面进行设计,要实现的效果如下: 根据图示 可知,ListView需要自定义试图,而且视...

hanzhankang
2013/03/06
2.5K
2
Button 按钮

按钮是程序中最常见的一个元素,我们通过一个例子感受一下,代码的讲解都写在注释里了,所以我就直接上代码和代码的运行结果。 package android.basic.lesson9; import android.app.Activity...

长平狐
2012/08/14
233
0

没有更多内容

加载失败,请刷新页面

加载更多

学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
43分钟前
5
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
9
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
13
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
16
0
【Medium 万赞好文】ViewModel 和 LIveData:模式 + 反模式

原文作者: Jose Alcérreca 原文地址: ViewModels and LiveData: Patterns + AntiPatterns 译者:秉心说 View 和 ViewModel 分配责任 理想情况下,ViewModel 应该对 Android 世界一无所知。...

秉心说
昨天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部