android程序中View的点击事件共有四种,除了在布局文件中为按钮设置属性外还有另外3种都用到了OnClickListener接口,只不过形式不同而已。
1.在布局文件中为按钮设置点击事件
在绑定的布局xml中有相应<Button />中添加android:onClick="click"之后在与xml布局绑定的Activity中添加方法
public void click(View view){
Log.i("已点击此按钮");
}
2.创建内部类
activity_main.xml中为控件设置id属性
<Button
android:id="@+id/button1"
…
/>
创建内部类实现OnClickListener接口
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button1.setOnClickListener(new MyButton());
Button2.setOnClickListener(new MyButton());
}
private class MyButton implements OnClickListener{
@Override
public void onClick(View v){
switch(v.getId()){
case R.id.button:Log.i("点击id为button的按扭");break;
case R.id.button1:Log.i("点击id为button1的按扭");break;
}
}
}
3.主类中实现OnClickListener接口
public class MainActivity extends Activity implements OnClickListener{
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1=setOnClickListener(this);
Button button2=setOnClickListener(this);
}
@Override
public void onClick(View v){
switch(v.getId()){
case R.id.button:Log.i("点击id为button的按扭");break;
case R.id.button1:Log.i("点击id为button1的按扭");break;
}
}
}
4.匿名内部类
Button button1=(Button) findViewById(R.id.button1);
button1.setOnclickListener(new OnClickListener(){
@Override
public void onClick(View v){
Log.i("通过匿名内部类的监听器实现绑定点击button1事件");
}
});
注意:在实现OnClickListener接口时,为按钮设置点击事件要导入android.view.View包。
这几种方式都不难理解,方式1最好理解,本人常使用方式3。