转载自:http://blog.sina.com.cn/s/blog_48b5bee10102uwmz.html
第一种方式:匿名内部类作为事件监听类
在Activity组件的Oncreata事件中直接定义,直接动作,这种方式使得每个控件都定义一次。大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适,实际上,这种形式是目前是最广泛的事件监听器形式。
Buttonbtn1=(Button)findViewById(R.id.myButton); btn1.setOnclickListener(new OnclickListener(){ public void onClick(View v){ // 要执行的操作 } })
Buttonbtn2=(Button)findViewById(R.id.myButton2); btn2.setOnclickListener(new OnclickListener(){ public void onClick(View v){ // 要执行的操作 } }) |
第二种通常是在Activity组件实现其接口,这样可以多个外接控件共享一个接口,相对方便
publicclass TestMedia extends Activity implementsOnClickListner{ Button btn1=(Button)findViewById(R.id.myButton1); Button btn2=(Button)findViewById(R.id.myButton2); btn1.setOnclickListener(this); btn2.setOnclickListener(this); } switch (v.getId()){ case R.id.myButton1; //要执行的动作1 break; case R.id.myButton2; //要执行的动作2 break; } } |
第三种类似于第二种,好处是如果需要,可以实现多个监听接口,这样更加方便
publicclass TestMedia extends Activity{ Button btn1=(Button)findViewById(R.id.myButton1); Button btn2=(Button)findViewById(R.id.myButton2); btn1.setOnclickListener(new Startclick()); btn2.setOnclickListener(new Stopclick()); } classStartClick implements OnClickListener{ public void onClick(View v){//或直接跟上要执行的动作 switch(v.getId()){ case R.id.myButton1: //要执行的动作 } } } classStopClick implements 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(Viewsource)方法,该方法将会负责处理该按钮上的单击事件。代码如下:
publicclass ButtonTest extends Activity{
protected void onCreate(Bundle savedInstanceState){
super.onCreat(savedInstanceState);
this.setContentView(R.layout.main);
}
public void clickHandler(Viewv){
System.out.println(“直接绑定在标签上的按钮”);
}
}