第一種也是最開始就接觸的方式,一般在activity組件的oncreate事件中直接定義,直接動做。這種方式每一個控件都定義一次,一般不方便. spa
Button btn = (Button) findViewById(R.id.myButton); 接口
btn .setOnClickListener(new View.OnClickListener() { 事件
public void onClick(View v) { get
//do something it
} class
}); import
或者 List
Button btn = (Button) findViewById(R.id.myButton); im
btn.setOnClickListener(ocl); activity
OnClickListener ocl = new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
}
};
第二種一般是在activity組件實現其接口,這樣能夠多外控件共享一個接口,這樣相對方便
publicclassTestMediaextendsActivityimplementsView.OnClickListener{
Button btn1 = (Button) findViewById(R.id.myButton1);
Button btn2 = (Button) findViewById(R.id.myButton2);
btn1 .setOnClickListener();
btn2 .setOnClickListener();
}
public void onClick(View v) {
switch (v.getId()) {
case R.id. myButton1:
//do something
break;
case R.id. myButton2:
//do something
break;
}
第三種相似第二種,這樣的好處在於若是須要實現多個監聽接口,這樣更清晰
publicclassTestMediaextendsActivity{
Button btn1 = (Button) findViewById(R.id.myButton1);
Button btn2 = (Button) findViewById(R.id.myButton2);
btn1 .setOnClickListener(new ClickEvent());
btn2 .setOnClickListener(new ClickEvent());
}
classClickEvent implementsView.OnClickListener
public void onClick(View v) {
switch (v.getId()) {
case R.id. myButton1:
//do something
break;
case R.id. myButton2:
//do something
break;
}