Button,作为Android的控件之一,用户通过点击对其进行操作。
java.lang.Object | |||
android.view.View | |||
android.widget.TextView | |||
↳ | android.widget.Button |
AppCompatButton, CompoundButton
AppCompatCheckBox, AppCompatRadioButton, CheckBox, RadioButton, Switch, SwitchCompat, ToggleButton
由于Button继承于TextView,XML属性不再解析,详情见TextView详解
Button作为通过点击进行操作,点击后事件处理方式有几种呢?下面就对Button事件处理几种方式一一解析
在布局文件中显式指定按钮的onClick属性即android:onClick=”XX”,在Acticity中实现XX方法。
XML布局:
在Activity中实现:
public void doOnclick(View view) {
Toast.makeText(this, "Xml注册处理单击事件", Toast.LENGTH_SHORT).show();
}
在Acitcity实现方法时,注意以下几点
1.访问修饰符必须是public
2.返回值必须是void
3.方法名称必须和xml中andorid:onClick="XX"一致
4.必须接收一个参数 该参数一定是View类型
5.@param v 被单击的控件
将当前Activity去实现View.OnClickListener在Activity中实现其onClick()方法。这样可以使多个按钮复用一个监听器。注册监听时,只需将当前对象(this)给按钮即可
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button btn_two;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_two = (Button) findViewById(R.id.btn_two);
btn_two.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Toast.makeText(this, "自身实现View.OnClickListener", Toast.LENGTH_SHORT).show();
}
}
当监听一个Button时,给Button设置监听,同时创建匿名内部类new OnclickListener()。
btn_three.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "成员内部类", Toast.LENGTH_SHORT).show();
}
});
在Activity中,自定义一个点击事件监听器的内部类类 MyOnclickListener让其实现View.OnClickListener的onClick(Viewv)方法。Button控件setOnclickListener(new MyOnClickListener())来接收一个点击事件的监听器。在每个Activity中,经常监听多个控件的单击事件,最喜欢使用这种方式,简单粗暴。
自定义内部类:
private class MyOnclicListener implements View.OnClickListener {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "成员内部类", Toast.LENGTH_SHORT).show();
}
}
Button设置监听
btn.setOnclickListener(new MyOnClickListener ());
四种监听Button单击事件处理方式,各有优劣,可以根据实际情况自行选择。
日积月累,总会进步!