详解Android中点击事件的几种实现方式

发布时间 - 2026-01-10 21:56:38    点击率:

在之前博文中多次使用了点击事件的处理实现,有朋友就问了,发现了很多按钮的点击实现,但有很多博文中使用的实现方式有都不一样,到底是怎么回事。今天我们就汇总一下点击事件的实现方式。

点击事件的实现大致分为以下三种:

(1)Activity 实现接口方式实现点击事件(经常使用)

(2)自定义方法,使用配置文件android:onclick

(3)使用内部类方式实现

(4)使用匿名内部类实现介绍下几种点击事件的实现方式:

下面我们通过代码来简单演示下几种点击事件的实现方式:

(1)Activity 实现接口方式实现点击事件

/**
 * Activity 实现接口方式实现点击事件
 * Activity 实现 View.OnClickListener 实现 onClick(View view){} 方法
 * 在 Activity 的 onCreate 方法中注册事件
 */
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  private Button btn;
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn = (Button) findViewById(R.id.button);
    btn.setOnClickListener(this);
  }
  public void onClick(View v) {
    Toast.makeText(MainActivity.this,"实现接口方式",Toast.LENGTH_LONG).show();
  }
}

(2)自定义方法,使用layout配置文件android:onclick

/**
 * 使用配置文件方式实现点击事件
 * 在layout中的配置文件中使用onClick 属性指定触发事件时的处理方法,
 * 在 Activity 中提供一个同名的方法 格式为 public void XXX(View v){....}
 */
public class MainActivity extends AppCompatActivity {
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }
  public void click(View v){
    Toast.makeText(MainActivity.this,"自定义",Toast.LENGTH_LONG).show();
  }
}

(3)使用内部类方式实现

/**
 * 使用内部类方式实现点击事件
 * 定义一个 View.OnClickListener 的实现类,实现 onClick 方法。
 * 在 Activity 的 onCreate 方法中注册事件
 */
public class MainActivity extends AppCompatActivity {
  private Button btn;
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn = (Button) findViewById(R.id.button2);
    btn.setOnClickListener(new Listener());
  }
  class Listener implements View.OnClickListener{
    @Override
    public void onClick(View v) {
      Toast.makeText(MainActivity.this,"内部类",Toast.LENGTH_LONG).show();
    }
  }
}

(4)使用匿名内部类实现

/**
 * 使用匿名内部类方式实现点击事件
 * 注册按钮单击事件时直接使用匿名内部类
 */
public class MainActivity extends AppCompatActivity {
  private Button btn;
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn = (Button) findViewById(R.id.button3);
    btn.setOnClickListener(new View.OnClickListener(){
      @Override
      public void onClick(View v) {
        Toast.makeText(MainActivity.this,"匿名内部类",Toast.LENGTH_LONG).show();
      }
    });
  }
}

补充:

不同的组件来实现不同类型的点击事件,例如onItemClickListener,OnCheckedChangeListener,OnRatingBarChangeListener,OnMultiChoiceClickListener,OnDate/timeSetListener,OnScrollListener,OnChildClickListener,setOnTouchListener,OnPageChangeListener,OnMenuItemClickListener,OnEditorActionListener,OnEditorActionListener等等各种点击事件的处理形式。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# android  # 实现点击事件  # 点击事件  # 按钮点击事件  # Android中父View和子view的点击事件处理问题探讨  # Android中捕获TTextView文本中的链接点击事件方法  # 简单讲解Android开发中触摸和点击事件的相关编程方法  # Android如何防止多次点击事件  # Android中捕捉menu按键点击事件的方法  # Android使用RecyclerView实现自定义列表、点击事件以及下拉刷新  # Android开发在轮播图片上加入点击事件的方法  # Android点击事件派发机制源码分析  # Android开发-之监听button点击事件的多种方法  # Android给TextView添加点击事件的实现方法  # 配置文件  # 自定义  # 几种  # 博文  # 都不  # 有很多  # 三种  # 问了  # 提供一个  # 来实现  # 不同类型  # 单击  # 大家多多  # 格式为  # 发现了  # 分为以下  # 使用了  # class  # brush  # pre 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何确认建站备案号应放置的具体位置?  Laravel如何创建自定义Facades?(详细步骤)  Swift中循环语句中的转移语句 break 和 continue  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  免费视频制作网站,更新又快又好的免费电影网站?  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  开心动漫网站制作软件下载,十分开心动画为何停播?  图册素材网站设计制作软件,图册的导出方式有几种?  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  原生JS获取元素集合的子元素宽度实例  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  iOS中将个别页面强制横屏其他页面竖屏  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  如何在万网自助建站中设置域名及备案?  UC浏览器如何设置启动页 UC浏览器启动页设置方法  Laravel如何实现模型的全局作用域?(Global Scope示例)  php结合redis实现高并发下的抢购、秒杀功能的实例  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  如何用腾讯建站主机快速创建免费网站?  Laravel如何与Inertia.js和Vue/React构建现代单页应用  如何快速生成凡客建站的专业级图册?  Laravel如何使用模型观察者?(Observer代码示例)  Laravel如何实现文件上传和存储?(本地与S3配置)  *服务器网站为何频现安全漏洞?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  Laravel如何实现API速率限制?(Rate Limiting教程)  如何批量查询域名的建站时间记录?  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  使用C语言编写圣诞表白程序  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  详解jQuery中的事件  历史网站制作软件,华为如何找回被删除的网站?  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  独立制作一个网站多少钱,建立网站需要花多少钱?  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  Laravel怎么连接多个数据库_Laravel多数据库连接配置  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  Laravel如何实现事件和监听器?(Event & Listener实战)  教你用AI将一段旋律扩展成一首完整的曲子  高防服务器租用指南:配置选择与快速部署攻略  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  如何快速查询域名建站关键信息?