第一种方法:
在布局文件中指定一个方法来响应点击事件,布局文件的写法如下:
<Button
android:onClick="clicked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn0" />
这样当点击按钮时,就会调用对应的Activity的相应的方法
public void clicked(View v){
//TODO
}
Andro
第二种方法
在Activity中或在XML中创建一个Button,我是在XML中通过id获取Button
<Button
android:id="@+id/btn_log"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/btn_log"/>
在Activity中获取通过id获取到Button并给按钮添加点击的监听者类MyOnClickListener
Button btn = (Button)findViewById(R.id.btn_log);
btn.setOnClickListener(new MyOnClickListener());
实现按钮点击的接口
class MyOnClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
//实现点击的方法
}
}
第三种方法:
在监听器只接收一个按钮点击时,可以采用
匿名内部类的形式
button.setOnclickListener(new View.OnClickListener (){
public void onClick(View v){
//TODO
}
});
第四种方法:
为了方便,有时候我会直接让Activity去实现View.OnClickListener接口,这时候就只需要在Activity中实现接口的onClick()方法就可以了,同时也可以让多个按钮复用一个监听器。然后在onClick()方法判断下Button的id就好了。
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
...
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
btn.setOnclickListener(this);
}
public void onClick(View v){
switch(v.getId()){
case R.id.btn0:
//TODO
break;
case R.id.btn1:
//TODO
break;
default:
//TODO
break;
}
}
}
网友评论