Android之Button点击事件处理的几种方式

来源:互联网 发布:陌陌协议软件 编辑:程序博客网 时间:2024/05/21 10:03

Button,作为Android的控件之一,用户通过点击对其进行操作。

1.继承关系

java.lang.Object  android.view.View  android.widget.TextView     ↳android.widget.Button

2.直接子类

AppCompatButtonCompoundButton

3.间接子类

AppCompatCheckBoxAppCompatRadioButtonCheckBoxRadioButtonSwitchSwitchCompatToggleButton

4.XML属性

由于Button继承于TextView,XML属性不再解析,详情见TextView详解

5.单击事件处理

Button作为通过点击进行操作,点击后事件处理方式有几种呢?下面就对Button事件处理几种方式一一解析

5.1  Xml注册处理单击事件

在布局文件中显式指定按钮的onClick属性即android:onClick=”XX”,在Acticity中实现XX方法。

XML布局:

    <Button        android:id="@+id/btn_one"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="10dp"       <span style="background-color: rgb(255, 255, 255);"> android:onClick="</span><span style="background-color: rgb(255, 0, 0);">doOnclick</span><span style="background-color: rgb(255, 255, 255);">"</span>        android:text="One"/>

在Activity中实现:

   <span style="background-color: rgb(255, 0, 0);"> public void doOnclick(View view)</span> {        Toast.makeText(this, "Xml注册处理单击事件", Toast.LENGTH_SHORT).show();    }

在Acitcity实现方法时,注意以下几点

1.访问修饰符必须是public 

2.返回值必须是void

3.方法名称必须和xml中andorid:onClick="XX"一致

4.必须接收一个参数 该参数一定是View类型

5.@param v  被单击的控件

5.2 Activity自身实现View.OnClickListener

将当前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();    }}

5.3 采用匿名内部类方式

当监听一个Button时,给Button设置监听,同时创建匿名内部类new OnclickListener()。

btn_three.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(MainActivity.this, "成员内部类", Toast.LENGTH_SHORT).show();            }        });

5.4 成员内部类

在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单击事件处理方式,各有优劣,可以根据实际情况自行选择。



日积月累,总会进步!



0 0