1、通过内部类实现监听器,将事件监听器定义成当前的内部类,使用内部类可以在当前类中复用监听器。
第一步:写监听器类,覆盖对应的抽象方法
第二步:创建监听器对象
第三步:注册
.以一个button为例,代码如下:
packagecn.csdn.android.tesxt;
importandroid.app.Activity;
importandroid.content.DialogInterface;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.Toast;
publicclassTestListenerActivityextendsActivity{
Buttonbtn;
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViews();
MyOnClickListenerlistener=newMyOnClickListener();
btn.setOnClickListener(listener);
}
privatevoidfindViews(){
btn=(Button)this.findViewById(R.id.button1);
}
classMyOnClickListenerimplementsOnClickListener{
@Override
publicvoidonClick(Viewv){
Toast.makeText(TestListenerActivity.this,"xxx",Toast.LENGTH_SHORT)
.show();
}
}
}
2、匿名内部类是最广泛的事件监听形式,因为大部分事件监听器只是临时使用一次,所以使用匿名类更加合适,代码如下:
packagecn.csdn.android.tesxt;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.Toast;
publicclassTestListenerActivityextendsActivityimplementsOnClickListener{
Buttonbtn;
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViews();
btn.setOnClickListener(this);
}
privatevoidfindViews(){
btn=(Button)this.findViewById(R.id.button1);
}
@Override
publicvoidonClick(Viewv){
Toast.makeText(TestListenerActivity.this,"xxx",Toast.LENGTH_SHORT)
.show();
}
}
3、Activity本身作为监听器,可以直接在Activity中定义事件处理器方法,形式虽然很简洁,但是容易造成程序混乱