1.匿名内部类
bt.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view){
//Here is what you want to really do
}
}
);
优点:可以在当前类中复用该监听器类
可以*访问外部类的所有界面组件
2.外部类监听(比较少见)
public class myListener implements OnClickListener{
public myListener(){
//构造方法
}
@Override
public void OnClick(View view){
//Here is what you want to really do
}
}
调用外部类:bt.setOnClickListener(new myListener());
缺点:不利于提高程序内聚性
不能*访问创建GUI界面类的组件,编程不够简洁
3.Activity本身作为事件监听器
public class MyActivity extends Activity implements OnClickListener{
Button bt;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bt = (Button) findViewById(R.id.bt);
bt.setOnClickListener(this);
}
@Override
public void onClick(View view){
//Here is what you want to really do
}
}
优点:简洁
缺点:这种形式可能造成程序结构混乱。Activity的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱
如果activity界面类需要实现监听器接口,让人感觉比较怪异
4.直接绑定到标签
android:onClick="myClick"
在布局中对相应控件设置这样一个属性,在该布局对应的Activity中定义一个void myClick()方法
这种方法我用的时候被前辈批评了...说哪来这么野的路子...