注:按钮的声明省略
1. 内部类监听点击事件
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//执行的操作
}
});
//注:独立类实现方式与这个原理相同,只是匿名类实例化了
e.g:
button.setOnClickListener( myOnClickListener);
OnClickListener myOnClickListener=new OnClickListener(){
@Override
public void onClick(View arg0) {
//执行的操作
}
2.外部类监听点击事件
优点:多个按钮实现相同功能,可以减少代码冗余
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1=(Button) findViewById(R.id.button1);
bt2=(Button) findViewById(R.id.button2);
bt1.setOnClickListener(new myOnClickListener(){
@Override
public void onClick(View v){
super.onClick(v);
Toast.makeText(MainActivity.this,"这是按钮1",Toast.LENGTH_LONG).show();});
bt2.setOnClickListener(new myOnClickListener(){
@Override
public void onClick(View v){
super.onClick(v);
Toast.makeText(MainActivity.this,"这是按钮2",Toast.LENGTH_LONG).show();}
});
}
public class myOnClickListener implements OnClickListener {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
arg0.setAlpha(0.5f); //这是共同执行的部分(按钮变暗)
}
}
3.通过接口方式实现点击事件
创建的类要继承OnClickListener接口:
public class MainActivity extends Activity implements OnClickListener{
---------{
---------
bt1.setOnClickListener(this);
bt2.setOnClickListener(this);
....
....
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.buttonA:
//......
break;
case R.id.buttonB:
// ......
break;
}
}
}
4.指定button 的onClick属性方式
在layout文件中 android:onClick="onButtonClick"
在Activity中实现onButtonClick方法:
public void onButtonClick(View v){
//操作
}