第一种方式:匿名内部类作为事件监听类
在Activity组件的Oncreata事件中直接定义,直接动作,这种方式使得每个控件都定义一次。大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适,实际上,这种形式是目前是最广泛的事件监听器形式。
Buttonbtn1=(Button)findViewById(R.id.myButton);
btn1.setOnclickListener(newOnclickListener(){
public void onClick(View v){
// 要执行的操作
}
})
Buttonbtn2=(Button)findViewById(R.id.myButton2);
btn2.setOnclickListener(newOnclickListener(){
public void onClick(View v){
// 要执行的操作
}
})
第二种通常是在Activity组件实现其接口,这样可以多个外接控件共享一个接口,相对方便
public classTestMedia extends Activity implements OnClickListner{
Buttonbtn1=(Button)findViewById(R.id.myButton1);
Buttonbtn2=(Button)findViewById(R.id.myButton2);
btn1.setOnclickListener(this);
btn2.setOnclickListener(this);
}
public voidonClick(View v){
switch (v.getId()){
case R.id.myButton1;
//要执行的动作1
break;
case R.id.myButton2;
//要执行的动作2
break;
}
}
第三种类似于第二种,好处是如果需要,可以实现多个监听接口,这样更加方便
public classTestMedia extends Activity{
Buttonbtn1=(Button)findViewById(R.id.myButton1);
Buttonbtn2=(Button)findViewById(R.id.myButton2);
btn1.setOnclickListener(newStartclick());
btn2.setOnclickListener(newStopclick());
}
class StartClickimplements OnClickListener{
public void onClick(View v){//或直接跟上要执行的动作
switch(v.getId()){
case R.id.myButton1:
//要执行的动作
}
}
}
class StopClickimplements OnClickListener{////或直接跟上要执行的动作
public void onClick(View v){
switch(v.getId()){
case R.id.myButton2:
//要执行的动作
}
}
}
第四种:直接绑定到标签
直接在界面布局文件中为指定标签绑定事件处理方法,对于很多Android标签而言,它们都支持如onClick、onLongClick等属性。在布局文件中为button添加属性,代码如下:
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”button”
android:id=”@+id/button”
android:onClick=”clickHandler”
为Button按钮绑定一个事件处理方法:clickHanlder,这意味着开发者需要在该界面布局对应的Activity中定义一个void clickHanler(View source)方法,该方法将会负责处理该按钮上的单击事件。代码如下:
public classButtonTest extends Activity{
protected void onCreate(BundlesavedInstanceState){
super.onCreat(savedInstanceState);
this.setContentView(R.layout.main);
}
public void clickHandler(View v){
System.out.println(“直接绑定在标签上的按钮”);
}
}