四种Button事件注册监听方法

布局文件:

  <span style="font-size:10px;"><TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="0"
        android:id="@+id/tv_1"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentStart="true"
        android:textSize="18dp"
        android:gravity="center" />

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tv_1"
        android:layout_alignParentStart="true">

        <Button
            style="?android:attr/buttonStyleSmall"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="+"
            android:id="@+id/btn_add"
            android:layout_below="@+id/tv_1"
            android:layout_alignParentStart="true"
            android:layout_weight="1"/>

        <Button
            style="?android:attr/buttonStyleSmall"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="-"
            android:id="@+id/btn_sub"
            android:layout_alignBaseline="@+id/btn_add"
            android:layout_alignBottom="@+id/btn_add"
            android:layout_alignParentEnd="true"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1"/>
    </LinearLayout></span>

第一种方式:   在xml文档中,指定onClick属性

    <Button
        android:id="@+id/btn_add"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="80sp"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv_1"
        android:layout_marginLeft="50dp"
        android:layout_marginTop="42dp"
        android:onClick="onClick"
        android:text="+" />

          然后直接定义一个onClick事件处理

    //没有@verride
    public void onClick(View view){
        
        int count = Integer.parseInt(tv_1.getText().toString());
        switch (view.getId()){
            case R.id.btn_add:
                count++;
            break;
            case R.id.btn_sub:
                count--;
        }
        tv_1.setText(count+"");
    }

第二种方式:给每个button设置监听器(匿名内部类)

       btn_add.setOnClickListener(new View.OnClickListener() {
            int count = Integer.parseInt(tv_1.getText().toString());

            @Override
            public void onClick(View v) {
                count++;
                tv_1.setText(count + "");
            }
        });

        btn_sbu.setOnClickListener(new View.OnClickListener() {
            int count = Integer.parseInt(tv_1.getText().toString());
            @Override
            public void onClick(View v) {
                count--;
                tv_1.setText(count+"");
            }
        });

第三种方式 :自定义一个类,实现OnClickListener接口

 class myOnclickListener implements View.OnClickListener {
        @Override
        public void onClick(View view) {
            int count = Integer.parseInt(tv_1.getText().toString());
             switch (view.getId()){
                 case R.id.btn_add:
                   count++;
                   break;
                 case R.id.btn_sub:
                     count--;
        }
             tv_1.setText(count+"");
        }
    }

<pre name="code" class="plain">//find()找到指定的button的id
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        find();
        btn_add.setOnClickListener(new myOnclickListener());
        btn_sbu.setOnClickListener(new myOnclickListener());

 } 

第四种方式:自身实现OnClickListener

public class MainActivity extends ActionBarActivity implements View.OnClickListener {
    private TextView tv_1;
    private Button btn_add;
    private Button btn_sbu;

    public void find(){
        tv_1 = (TextView) findViewById(R.id.tv_1);
        btn_add = (Button) findViewById(R.id.btn_add);
        btn_sbu = (Button) findViewById(R.id.btn_sub);
    }
    @Override
    public void onClick(View view) {
        int count = Integer.parseInt(tv_1.getText().toString());
        switch (view.getId()){
            case R.id.btn_add:
                count++;
            break;
            case R.id.btn_sub:
                count--;
        }
        tv_1.setText(count+"");
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        find();
        btn_add.setOnClickListener(this);
        btn_sbu.setOnClickListener(this);
    }

按钮多的情况下推荐使用第四种方法






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值