Android中点击事件的四种写法详解

发布时间 - 2026-01-11 01:02:10    点击率:

Android中点击事件的四种写法

  1. 使用内部类实现点击事件
  2. 使用匿名内部类实现点击事件
  3. 让MainActivity实现View.OnClickListener接口
  4. 通过布局文件中控件的属性

第一种方法:使用内部类

基本步骤如下:

1. 新建一个MyOnClickListener类并实现View.OnClickListener接口

2. 重写View.OnClickListener接口中的OnClick(View view)方法

3. 给Button绑定一个监听器,并监听一个点击事件

示例代码如下:

public class MainActivity extends Activity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
  //必须调用一次父类的该方法,因为父类中做了大量的工作
  super.onCreate(savedInstanceState);
  //给当前的Activity绑定一个布局
  setContentView(R.layout.activity_main);
  //通过调用父类的findViewById方法,根据控件的id获取控件对象
  btn = (Button) findViewById(R.id.button);
  //使用内部类(实现OnClickListener)给button绑定一个监听器,监听点击事件
  btn.setOnClickListener(new MyOnClickListener());
}

/*注意:这里的OnClickListener是android.view.View包下的,
   不是android.content.DialogInterface包下的。*/
class MyOnClickListener implements View.OnClickListener{
  @Override
  public void onClick(View v) {
    System.out.println("使用内部类实现点击事件");
  }
}

第二种方法:使用匿名内部类

基本步骤如下:

1. 给Button绑定一个监听器,并监听一个点击事件

2. 在setOnClickListener方法中直接传入一个OnClickListener对象,并实现OnClick方法

示例代码如下:

public class MainActivity extends Activity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
  //必须调用一次父类的该方法,因为父类中做了大量的工作
  super.onCreate(savedInstanceState);
  //给当前的Activity绑定一个布局
  setContentView(R.layout.activity_main);
  //通过调用父类的findViewById方法,根据控件的id获取控件对象
  btn = (Button) findViewById(R.id.button);
  //使用匿名内部类(实现OnClickListener)给button绑定一个监听器,监听点击事件
  btn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
      System.out.println("使用匿名内部类实现点击事件");
      }
    });
  }
}

第三种方法:让MainActivity直接实现View.OnClickListener接口

基本步骤如下:

1. 让MainActivity直接实现View.OnClickListener

2. 在MainActivity类中重写onClick方法

3. 给Button绑定一个监听器,并监听一个点击事件。

注:此时setOnClickListener传入的是this

示例代码如下:

public class MainActivity extends Activity implements OnClickListener {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
  //必须调用一次父类的该方法,因为父类中做了大量的工作
  super.onCreate(savedInstanceState);
  //给当前的Activity绑定一个布局
  setContentView(R.layout.activity_main);
  //通过调用父类的findViewById方法,根据控件的id获取控件对象
  btn = (Button) findViewById(R.id.button);
  //使用MainActivity实现OnClickListener接口给button绑定一个监听器,监听点击事件
  //注:此时setOnClickListener传入的是this
  btn.setOnClickListener(this);
}
//实现OnClickListener接口中的onClick方法
@Override
public void onClick(View v) {
  System.out.println("让MainActivity实现View.OnClickListener接口从而实现点击事件");
  }
}

第四种方法:通过布局文件中控件的属性

基本步骤如下:

1. 在activity_main.xml中给Button控件添加Android:onClick=”action”属性

2. 在Activity中实现action方法,action方法必须满足如下三个条件:

(1) 方法的访问修饰符必须是public

(2)方法的名称必须跟android:onClick=”action” 中的名称完全一致

(3)形参必须是View类型

示例代码如下:

public class MainActivity extends Activity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
  //必须调用一次父类的该方法,因为父类中做了大量的工作
  super.onCreate(savedInstanceState);
  //给当前的Activity绑定一个布局
  setContentView(R.layout.activity_main);
  //通过调用父类的findViewById方法,根据控件的id获取控件对象
  btn = (Button) findViewById(R.id.button);
  System.out.println("Button 是"+btn);
}
//利用反射给button绑定一个监听器,监听点击事件
/**
 * 1:方法的访问修饰符必须是public
 * 2:方法的名称必须跟android:onClick="call" 中的名称完全一致
 * 3:形参必须是View类型
 * 注:形参View其实就是Button对象本身
 * */
public void call(View view ){
  System.out.println("View 是"+view);
  System.out.println("通过反射实现点击事件");
  }
}

友情提醒:形参View其实就是Button对象本身

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


# android  # 点击事件写法  # 按钮点击事件  # 安卓点击事件4种写法  # Android中父View和子view的点击事件处理问题探讨  # Android中捕获TTextView文本中的链接点击事件方法  # 简单讲解Android开发中触摸和点击事件的相关编程方法  # Android如何防止多次点击事件  # Android中捕捉menu按键点击事件的方法  # Android使用RecyclerView实现自定义列表、点击事件以及下拉刷新  # Android 中ListView的Item点击事件失效的快速解决方法  # Android开发在轮播图片上加入点击事件的方法  # android中在Activity中响应ListView内部按钮的点击事件的两种方法  # 详解Android中点击事件的几种实现方式  # 绑定  # 种方法  # 类中  # 的是  # 为父  # 重写  # 修饰符  # 四种  # 大家多多  # 新建一个  # Button  # public  # extends  # Activity  # java  # pre  # class  # brush  # view  # MainActivity 


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


相关推荐: 大连网站制作公司哪家好一点,大连买房网站哪个好?  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  Python3.6正式版新特性预览  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  网站图片在线制作软件,怎么在图片上做链接?  焦点电影公司作品,电影焦点结局是什么?  javascript读取文本节点方法小结  如何批量查询域名的建站时间记录?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  googleplay官方入口在哪里_Google Play官方商店快速入口指南  Laravel安装步骤详细教程_Laravel环境搭建指南  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  如何在Windows虚拟主机上快速搭建网站?  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  详解Android——蓝牙技术 带你实现终端间数据传输  如何用狗爹虚拟主机快速搭建网站?  如何在IIS管理器中快速创建并配置网站?  如何做网站制作流程,*游戏网站怎么搭建?  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  网站页面设计需要考虑到这些问题  如何确保西部建站助手FTP传输的安全性?  Java垃圾回收器的方法和原理总结  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  如何快速生成ASP一键建站模板并优化安全性?  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  Python文件操作最佳实践_稳定性说明【指导】  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  如何快速查询网站的真实建站时间?  JavaScript如何实现继承_有哪些常用方法  网站优化排名时,需要考虑哪些问题呢?  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  如何在Windows服务器上快速搭建网站?  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  JavaScript如何操作视频_媒体API怎么控制播放  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  Laravel如何为API生成Swagger或OpenAPI文档  详解阿里云nginx服务器多站点的配置  如何用西部建站助手快速创建专业网站?  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  中山网站制作网页,中山新生登记系统登记流程?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南