Android 基于监听的事件处理机制和具体实现

事件监听机制中由事件源,事件,事件监听器三类对象组成 处理流程如下: 
Step 1:为某个事件源(组件)设置一个监听器,用于监听用户操作 
Step 2:用户的操作,触发了事件源的监听器 
Step 3:生成了对应的事件对象 
Step 4:将这个事件源对象作为参数传给事件监听器 
step 5:事件监听器对事件对象进行判断,执行对应的事件处理器(对应事件的处理方法)

归纳:
事件监听机制是一种委派式的事件处理机制,事件源(组件)事件处理委托给事件监听器当事件源发生指定事件时,就通知指定事件监听器,执行相应的操作

简单的按钮点击,提示Toast信息的程序;可以有多种方法实现

1. 直接用匿名内部类

平时最常用的一种:直接setXxxListener后,重写里面的方法即可; 通常是临时使用一次,复用性不高!

btnshow.setOnClickListener(new OnClickListener() {    
    //重写点击事件的处理方法onClick()    
    @Override    
    public void onClick(View v) {    
    //显示Toast信息    
    Toast.makeText(getApplicationContext(), "你点击了按钮", Toast.LENGTH_SHORT).show();    
    }    
 });   

2. 使用内部类

使用优点:可以在该类中进行复用,可直接访问外部类的所有界面组件!

//直接new一个内部类对象作为参数    
btnshow.setOnClickListener(new BtnClickListener());    
//定义一个内部类,实现View.OnClickListener接口,并重写onClick()方法    
class BtnClickListener implements View.OnClickListener    
{    
    @Override    
    public void onClick(View v) {    
    Toast.makeText(getApplicationContext(), "按钮被点击了", Toast.LENGTH_SHORT).show();   
    }    
}    

3. 直接使用Activity作为事件监听器

让Activity类实现XxxListener事件监听接口,在Activity中定义重写对应的事件处理器方法 ,

eg:Actitity实现了OnClickListener接口,重写了onClick(view)方法在为某些组建添加该事件监听对象时,直接setXxx.Listener(this)即可

//让Activity方法实现OnClickListener接口    
public class MainActivity extends Activity implements OnClickListener{
//直接写个this    
btnshow.setOnClickListener(this);    
//重写接口中的抽象方法    
    @Override    
public void onClick(View v) {    
    Toast.makeText(getApplicationContext(), "点击了按钮", Toast.LENGTH_SHORT).show();         
}         

4. 直接绑定到标签:

就是直接在xml布局文件中对应得Activity中定义一个事件处理方法

eg:public void myClick(View source) source对应事件源(组件) 接着布局文件中对应要触发事件的组建,设置一个属性:onclick = "myclick"即可

//自定义一个方法,传入一个view组件作为参数    
public void myclick(View source)    
{    
    Toast.makeText(getApplicationContext(), "按钮被点击了", Toast.LENGTH_SHORT).show();    
} 
main.xml布局文件:
android:onClick="myclick"

5. 使用外部类:

创建一个处理事件的Java文件,这种形式用的比较少!因为外部类不能直接访问用户界面类中的组件,要通过构造方法将组件传入使用;这样导致的结果就是代码不够简洁!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值