为按钮(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("使用外部类创建按钮监听器"); } } 例子2:
- Baby_Bonnie 非常感谢你的答案,简洁明了!
- 2 年多之前 回复
您可以使用一个没有定义为匿名内部类的处理程序。但这个类得是一个单独的类。onClick()将会传递视图,你可以在onClick()中选择。
public class MyActivity implements OnClickListener { public void onClick(View v) { Button b = (Button)v; // do what you want } ... }
然后在你的layout.xml放入每个按钮
<Button android:id=".." android:onClick="onClick"
你可以在一个类中处理它们,然后实现OnClickListener事件。或在该Activity中添加:
import android.view.View.OnClickListener;
public class MyActivity extends Activity implements OnClickListener {
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button buttonA = (Button) findViewById(R.id.buttonA);
buttonA.setOnClickListener(this);
Button buttonB = (Button) findViewById(R.id.buttonB);
buttonB.setOnClickListener(this);
}
//......
public void onClick(View v) {
switch (v.getId()) {
case R.id.buttonA:
//......
break;
case R.id.buttonB:
// ......
break;
}
}
}
四.绑定到标签
在布局文件中为Button控件添加属性:
android:onClick="ButtonListener"
然后在java中定义ButtonListener方法
public void ButtonListener (View source) { System.out.println("使用标签属性创建按钮监听器"); } 更新: 在AndroidStudio中,处理onClick事件可以在控件的属性窗口中为onClick指定方法。