/**
* 使用三种方式实现按钮点击事件的监听
* 1.匿名内部类实现
* 2.外部类实现
* 3.通过接口方式实现
*/
public class ListenerActivity extends Activity implements OnClickListener{
private Button button1; // 匿名内部类实现
private Button button2; // 外部类实现
private Button button3; // 通过接口方式实现
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listener);
setUpView();
initView();
}
private void setUpView(){
button1 = (Button)this.findViewById(R.id.button1);
button2 = (Button)this.findViewById(R.id.button2);
button3 = (Button)this.findViewById(R.id.button3);
}
private void initView(){
// 匿名内部类实现
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Log.i("listener", "通过匿名内部类实现");
}
});
// 外部类实现
button2.setOnClickListener(new ListenerExtend(){
@Override
public void onClick(View arg0) {
// 调用父类的onClick
super.onClick(arg0);
Log.i("listener", "外部类实现,父类的执行完之后,再执行自己独用有的动作");
}
});
// 通过接口方式实现
button3.setOnClickListener(this);
}
/**
* 外部类点击时间监听器
* 使用场景:一般为一个页面多个按钮在点击时会执行同一个动作,但各自又会执行自己独有的动作
*/
class ListenerExtend implements OnClickListener{
@Override
public void onClick(View arg0) {
Log.i("listener", "外部类实现,会先执行相同的动作");
}
}
/*
* 通过接口方式实现
* 通过ListenerActivity 实现 OnClickListener
* 重载onClick 方法
*/
@Override
public void onClick(View arg0) {
Log.i("listener", "通过接口方式实现");
}
}