给按钮添加监听器

两种方法:

  1. 1.匿名内部类

    1. 这种方式是创建一个实现了 View.OnClickListener 接口的匿名内部类,并在该类的 onClick 方法中编写点击事件的处理逻辑。

      package com.example.apptest;
      
      import static java.time.LocalTime.now;
      import android.os.Bundle;
      import android.view.View;
      import android.widget.Button;
      import android.widget.TextView;
      import androidx.appcompat.app.AppCompatActivity;
      
      public class MainActivity extends AppCompatActivity {
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              // 当前的页面布局采用的是res/layout/activity_main.xml
              setContentView(R.layout.activity_main);
              //获取按钮控件
              Button btn_click_single=findViewById(R.id.btn_click_single);
              TextView tv_result = findViewById(R.id.tv_result);
              //给按钮添加监听器
              btn_click_single.setOnClickListener(new View.OnClickListener(){
                  @Override
                  public void onClick(View view) {
                       点击事件处理逻辑
                      String desc = String.format("%s 点击了按钮:%s", now(), ((Button)view).getText());
                      tv_result.setText(desc);
                  }
              });
      
          }
      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical">
         
          <TextView
              android:id="@+id/tv_result"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:background="#ffffaa"
              android:fillViewport="true"/>
          <Button
              android:id="@+id/btn_click_single"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:text="匿名内部类实现的监听"
              android:textAllCaps="false">
      
          </Button>
      
      </LinearLayout>
      这种方法适合单次性使用监听器,或者在代码量不大时使用。可以直接在设置监听器的地方创建一个匿名内部类的实例,并重写onClick方法。​​​​​​

 如果监听器具有复用性,可以将其定义为内部类。这样可以在同一个类中多次使用相同的监听器逻辑

2. 实现接口

这种方式是让当前的 ActivityFragment 实现 View.OnClickListener 接口,并在 ActivityFragment 中设置监听器。

package com.example.apptest;

import static java.time.LocalTime.now;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;



import androidx.appcompat.app.AppCompatActivity;


public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 当前的页面布局采用的是res/layout/activity_main.xml
        setContentView(R.layout.activity_main);
        //获取按钮控件
        Button btn_click_single=findViewById(R.id.btn_click_single);
        //给按钮添加监听器
        btn_click_single.setOnClickListener(this);

    }
        @Override
        public void onClick(View view) {
            TextView tv_result = findViewById(R.id.tv_result);
            String desc = String.format("%s 点击了按钮:%s", now(), ((Button)view).getText());
            tv_result.setText(desc);
        
    }
}
 // 在onCreate或其他方法中使用
    MyOnClickListener listener = new MyOnClickListener();
    button.setOnClickListener(listener);

跟着动脑学院学习事件监听器,代码上我有错漏的地方或者是我理解错的地方,欢迎提出!

(因为我是跟着文档敲的!所以很可能有理解错的地方!)

视频链接:28-点击事件_哔哩哔哩_bilibili

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值