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的按钮单击事件及监听器的实现方式
查看全文
相关阅读:
怎样使用 Apache ab 以及 OneAPM 进行压力測试?
opencv之haar特征+AdaBoos分类器算法流程(三)
分区函数Partition By的与row_number()的用法以及与排序rank()的用法详解(获取分组(分区)中前几条记录)
REST API 调用 方法
WebApi的安全性及其解决方案
使用Topshelf创建Windows服务
LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Count
sqlbulkcopy 多表批量保存
C#使用HttpWebRequest和HttpWebResponse上传文件示例
C#模拟客户端发送数据示例
原文地址:https://www.cnblogs.com/x38160/p/3292922.html
最新文章
CSAGAN:LinesToFacePhoto: Face Photo Generation from Lines with Conditional Self-Attention Generative Adversarial Network
SketchyGAN: Towards Diverse and Realistic Sketch to Image Synthesis
…… are only available on JDK 1.5 and higher 错误
web.xml关于spring的讲解
端口占用解决方案
lambda expressions are not supported at this language level
很赞的idea教程
IDEA创建maven项目
AOP技术分析
面向对象原则
热门文章
透彻理解Ioc
mysql的逻辑结构
atitit.html编辑器的设计要点与框架选型 attilax总结
windows7使用Source insight上远程改动ubuntu共享内核源代码
iconv 使用方法封装
Spring实现动态数据源,支持动态加入、删除和设置权重及读写分离
C/C++/Objective-C经典书籍推荐
【问题跟踪】KryoException: java.io.IOException: No space left on device
程序猿的干货:20条传说中的犯贱心理学(单身狗的福利)
ThinkPHP32 MODULE_ALLOW_LIST 存在的bug 不生效
Copyright © 2011-2022 走看看