为按钮(Button)添加响应事件,需要为其设置监听器(Listener)。本文总结了Android中常用的几种Button Listener。
一.使用匿名内部类
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new OnClickListener {
public void onClick(View v) {
System.out.println("使用匿名内部类创建按钮监听器");
}
});
二.使用内部类
public class ButtonListener extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button)findViewById(R.id.button);
MyListener myListener = new MyListener();
button.setOnClickListener(myListener);
}
class MyListener implements OnClickListener {
public void onClick (View v){
System.out.println("使用内部类创建按钮监听器");
}
}
}
三.使用外部类
public class ButtonListener extends Activity {
...
...
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new ButtonListener());
}
public class ButtonListener implements OnClickListener {
public void onClick (View v){
System.out.println("使用外部类创建按钮监听器");
}
}
四.绑定到标签
在布局文件中为Button控件添加属性:
android:onClick="ButtonListener"
然后在java中定义ButtonListener方法
public void ButtonListener (View source) { System.out.println("使用标签属性创建按钮监听器"); }
五.接口方式监听按钮点击事件
MainActivity.java的代码如下 package cn.edu.nuc.xsc.hsth; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageButton; import android.app.Activity; public class MainActivity extends Activity implements OnClickListener{ private Button loginButton; private ImageButton imgBut; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); loginButton = (Button) findViewById(R.id.button); //初始化当前所需要的控件 /* * 2.监听事件通过第二种方式实现(独立实现) * */ loginButton.setOnClickListener(listener); imgBut = (ImageButton) findViewById(R.id.imageButton); //通过一个实现接口的方式实现监听事件 imgBut.setOnClickListener(this); //通过this来访问本生接口下的对象的 } OnClickListener listener = new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //System.out.println("独立类实现的监听事件被触发了"); //用log日志的方式输出 Log.i("tag", "独立类实现的监听事件被触发了"); } }; @Override public void onClick(View v) { // Log.i("tag", "接口方式监听按钮点击事件"); } }