第一种,匿名内部类作为事件监听类.

Button button = (Button) findViewById(R.id.button);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {System.out.println("匿名内部类作为事件监听器");}});
大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适,实际上,这种形式是目前是最广泛的事件监听器形式。上面的程序代码就是匿名内部类来创建事件监听器的!
对于使用匿名内部类作为监听器的形式来说,唯一的缺点就是匿名内部类的语法有点不易掌握,如果读者java基础扎实,匿名内部类的语法掌握较好,通常建议使用匿名内部类作为监听器。


第二种:内部类作为监听器
android之按钮单击事件及监听器的实现方式_第1张图片
将事件监听器类定义成当前类的内部类。1、使用内部类可以在当前类中复用监听器类,因为监听器类是外部类的内部类,2、所以可以自由访问外部类的所有界面组件。这也是内部类的两个优势。上面代码就是内部类的形式!!
第三种:Activity本身作为事件监听器
android之按钮单击事件及监听器的实现方式_第2张图片 这种形式使用activity本身作为监听器类,可以直接在activity类中定义事件处理器方法,这种形式非常简洁。但这种做法有两个缺点:(1)这种形式可能造成程序结构混乱。Activity的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱。(2)如果activity界面类需要实现监听器接口,让人感觉比较怪异。
上面的程序让Activity类实现了OnClickListener事件监听接口,从而可以在该Activity类中直接定义事件处理器方法:onClick(view v),当为某个组件添加该事件监听器对象时,直接使用this作为事件监听器对象即可。

第四种:外部类作为监听器
ButtonTest类
android之按钮单击事件及监听器的实现方式_第3张图片
当用户单击button按钮时,程序将会触发MyButtonListener监听器
外部MyButtonListener类
android之按钮单击事件及监听器的实现方式_第4张图片
使用顶级类定义事件监听器类的形式比较少见,主要因为如下两个原因:
1、事件监听器通常属于特定的gui界面,定义成外部类不篮球提高程序的内聚性。
2、外部类形式的事件监听器不能自由访问创建gui界面的类中的组件,编程不够简洁。
但如果某个事件监听器确实需要被多个gui界面所共享,而且主要是完成某种业务逻辑的实现,则可以考虑使用外部类的形式来定义事件监听器类。
第五种:直接绑定到标签
Android还有一种更简单的绑定事件监听器的的方式,直接在界面布局文件中为指定标签绑定事件处理方法。
对于很多Android标签而言,它们都支持如onClick、onLongClick等属性,这种属性的属性值就是一个形如xxx
(View source)
的方法的方法名。在布局文件中为button添加属性,如一代码:
android之按钮单击事件及监听器的实现方式_第5张图片
为Button按钮绑定一个事件处理方法:clickHanlder,这意味着开发者需要在该界面布局对应的Activity中定义一个void clickHanler(View source)方法,该方法将会负责处理该按钮上的单击事件。
下面是该界面布局对应的java代码:
android之按钮单击事件及监听器的实现方式_第6张图片

更多相关文章

  1. Android给TextView添加点击事件
  2. Android中button的onClick事件几种方法
  3. Android中几种延后处理事件的方法
  4. Android学习(一) 按钮的事件
  5. 在Unity中捕捉Android的常用按钮返回事件
  6. Android中的使用ListView控件显示List集合中的数据,并对Item响应
  7. sencha touch中处理Android返回按钮事件
  8. Android的事件响应机制
  9. 安卓事件分发流程

随机推荐

  1. android详细解释键盘和鼠标事件
  2. 为了获取下一个10亿用户,Google的布局其实
  3. Android 企业需求与开发者状况简析(转)
  4. Android内核开发:序
  5. Android(安卓)adb使用sqlite3对一个数据
  6. 关于成立北京Android爱好者俱乐部的声明
  7. Android的Merge讲解与实例
  8. Android逆向分析之dex2jar和jd-gui使用
  9. Android输入法框架系统(上)
  10. Android双击返回键退出程序的实现方法