Android的四种监听事件处理方式
来源:互联网 发布:淘宝 苹果证书 编辑:程序博客网 时间:2024/06/17 09:03
大多数情况下,我在对Android的事件处理方式都是用的基于监听的事件处理方式。事件监听的处理模型,主要涉及如下三类对象:
- 事件源:事件发生的场所。通常是某个组件,例如按钮、窗口、菜单、item等
- 事件:指界面的组件上发生的特定事情(通常就是一次用户操作)。如果程序想要获取界面上组件所发生的事件的相关信息,一般通过事件的对象来获取。
- 事件监听器:负责监听事件源所发生的事件,并对各种事件做出的相应响应。
所谓的事件监听器,其实就是实现了特定接口的Java类的实例。在实际应用中,实现事件监听器主要有四种形式:
- 内部类作为事件监听器类:将事件监听器类定义成当前类的内部类。优点:①可以在当前类中复用该监听器类;②因为监听器是外部类的内部类,所以可以自由访问外部类的所有界面组件。
public class MainActivity extends Activity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 获取应用程序中的bn按钮 Button bn = (Button) findViewById(R.id.bn); // 为按钮绑定事件监听器 bn.setOnClickListener(new MyClickListener()); } // 定义一个单击事件的监听器(使用内部类作为事件监听器类) class MyClickListener implements View.OnClickListener { // 实现监听器类必须实现的方法,该方法将会作为事件处理器 @Override public void onClick(View v) { //准备intent对象 Intent intent = new Intent(MainActivity.this,NextActivity.class); //启动下一个界面 startActivity(intent ); } }}
- Activity本身作为事件监听器类:让Activity本身实现监听器接口,并实现事件处理方法。缺点:可能造成程序结构混乱,Activity的主要职责应该是完成界面的初始化工作,但此时还要包含事件处理器方法,从而引起混乱
// 实现事件监听器接口public class MainActivity extends Activity implements View.OnClickListener{ EditText show; Button bn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); show = (EditText) findViewById(R.id.show); bn = (Button) findViewById(R.id.bn); // 直接使用Activity作为事件监听器 bn.setOnClickListener(this); } // 实现事件处理方法 @Override public void onClick(View v) { //准备intent对象 Intent intent = new Intent(this,NextActivity.class); //启动下一个界面 startActivity(intent ); }}
- 匿名内部类作为事件监听器类:使用匿名内部类创建事件监听器对象
public class MainActivity extends Activity{ Button bn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); bn = (Button) findViewById(R.id.bn); // 使用匿名内部类的实例作为事件监听器 bn.setOnClickListener(new OnClickListener() { // 实现事件处理方法:当点击按钮时,跳转到下一个界面 @Override public void onClick(View v) { //准备intent对象 Intent intent = new Intent(MainActivity.this,NextActivity.class); //启动下一个界面 startActivity(intent ); } }); }}
外部类作为事件监听器类:将事件监听器类定义成一个外部类。比较少见,基本不用。
通过上面是几个例子可以看出,基于监听的事件处理模型的编程步骤如下:
①获取界面组件(事件源),也就是被监听的对象。(findViewById())
②实现事件监听器类,该监听器类是一个特殊的Java类,必须实现一个XxxListener接口。
③调用事件源的setXxxListener方法将事件监听器对象注册给组件(事件源)。
当事件源上发生指定事件时,Android会触发事件监听器,由事件监听器调用相应的方法来处理事件。
0 0
- Android的四种监听事件处理方式
- Android 四种绑定监听事件的方式
- Android监听事件添加动作的四种方式
- Android四种绑定监听事件的方式
- Android 四种绑定监听事件的方式
- Android 四种绑定监听事件的方式
- Android四种事件处理方式
- Android监听的四种方式
- Android实现监听的四种方式
- android事件监听的两种方式
- android 监听事件的处理
- jQuery中的四种事件监听方式
- android 按钮监听事件的四种写法
- Android 事件监听处理
- Android 事件监听处理
- android监听事件添加动作的三种方式
- 王立平--android事件监听的3种方式
- android开发学习--------事件监听的4种方式
- tcpip问题(较全)
- 2015年多校联合训练第四场(Problem Killer)hdu5328
- 根据数据库动态创建CheckBox
- 黑马程序员-C语言中static、extern、typedef、enum使用的注意事项
- VVDocumenter Xcode6.4安装步骤(非常实用)
- Android的四种监听事件处理方式
- UVA10025连续自然数添上正负号得到固定的数
- css页面布局基础
- HDU 3829 — Cat VS Dog 最大独立集
- Fraction类(分数)实现分数的加减乘除, ⽐比较⼤大⼩小、约分等⽅方法
- hdu5336 多校联合第四场1010 模拟+bfs优先队列
- 鸟哥的私房菜学习笔记 重要的Bash Shell的操作环境
- Windows7解决VBoxDD.dll不能加载
- Integer super重写重载public4个关键字