Android中进行事件处理?事件源、事件处理类、注册事件监听

Android对监听事件的处理可以分为4种

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

内部类有两种:分别为匿名内部类和不匿名内部类,其中大部分事件监听类都是使用匿名内部类。

其中的好处有:1.可以在当前类中复用该监听器类

2.可以自由访问外部类的所有界面组件

代码
b1.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intet = new Intent(MainActivity.this,seekbar.class);
startActivity(intet);
//finish();
}
});

第二种:外部类作为事件监听器类

比较少见,其中优点为:

当某个事件监听器被多个GUI界面共享,且主要是完成某种业务逻辑的实现

其中确定为:

1.不利于提高程序的内聚性

2.不能自由访问创建GUI界面类的组件,编程不够简洁

定义外部类代码

public sd(){    
}    
public void onClick(View v) {  
    // TODO Auto-generated method stub  
    //定义处理  
}  

调用外部类
b1.setOnClickListener(new sd()});

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

可以直接在Activity中定义事件处理方法

其中优点为:非常简洁

缺点为:

1.这种形式可能造成程序结构混乱。Activity的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱

2.如果activity界面类需要实现监听器接口,让人感觉比较怪异。

代码为:

public class ActivityListener extends Activity implements OnClickListener {
EditText show;
Button bn;

protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.main);  
    show = (EditText)findViewById(R.id.show);  
    bn = (Button)findViewById(R.id.bn);  
    bn.setOnClickListener(this);  
}   
public boolean onCreateOptionsMenu(Menu menu) {  
    // Inflate the menu; this adds items to the action bar if it is present.  
    getMenuInflater().inflate(R.menu.activity_listener, menu);  
    return true;  
}  
public void onClick(View v) {  
    // TODO Auto-generated method stub  
    show.setText("按钮被单击了!");  
}   

}
第四种:直接绑定到标签

在布局中要发送事件源中定义一个:

android:onClick=”clickHandler”

然后在该布局对应的Activity定义一个 void clickHandler(void source)方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值