设置Button监听事件的三种方式
三种Button监听事件设置方法
- 匿名内部类
- 外部类
- 接口方式
匿名内部类
直接创建匿名内部类。
loginButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 在此处监听
System.out.println("我的按钮被点击了");
}
});
外部类
新建一个外部类,实现OnClickListener接口,并重写onClick方法。
class MyOnClickListener implements OnClickListener{
@Override
public void onClick(View v) {
Log.i("tag", "???");
}
}
然后在OnCreate函数中,创建该对象实例并使用。
MyOnClickListener listener = new MyOnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
super.onClick(v);
Toast.makeText(MainActivity.this, "!!!", 1).show();
}
}
loginButton.setOnClickListener(listener);
在事件响应过程中,先执行在创建对象实例时重写的onClick方法,后执行类中的onClick方法。即,先执行
Toast.makeText(MainActivity.this, "!!!", 1).show();
然后执行
Log.i("tag", "???");
接口方式
接口方式需要Activity类实现OnClickListener接口,并重写onClick方法。
public class MainActivity extends Activity implements OnClickListener{
private ImageButton imageButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//将布局XML文件引入到activity中
setContentView(R.layout.activity_main);
/*
* 初始化当前所需要控件
* findViewById--返回一个View对象,对其强制类型转换。
*
*/
imageButton = (ImageButton)findViewById(R.id.imageButton1);
imageButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("tag", "接口实现");
}
}