一、准备工作

1、项目结构

2、布局文件(activity_main.xml)

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical"> <Button
android:id="@+id/btn_click"
android:text="点击我"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> </LinearLayout>

二、效果

三、三种实现方式

1、(方式一)在与事件绑定时定义事件监听器

该方法是当通过调用组件的setXXXListener()方法设置监听器时,定义只能当前的组件使用的事件监听器,代码如下

 public class MainActivity extends AppCompatActivity implements View.OnClickListener {

     @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); Button btnClick = findViewById(R.id.btn_click);
//使用findViewById方法对控件进行获取
//R.id.btn_click对应布局中添加的id属性 btnClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//里面写点击后想要实现的效果
Toast.makeText(MainActivity.this,
"按钮被点击", Toast.LENGTH_SHORT).show();
//这里是弹出一个消息---"按钮被点击"
}
});
} }
 //使用findViewById方法对控件进行获取  //R.id.btn_click对应布局中添加的id属性   btnClick.setOnClickListener(new View.OnClickListener() {   @Override  public void onClick(View view) {  //里面写点击后想要实现的效果  Toast.makeText(MainActivity.this,  "按钮被点击", Toast.LENGTH_SHORT).show();  //这里是弹出一个消息---"按钮被点击"   }   });   }   }

【提示】Button btnClick = findViewById(R.id.btn_click);在不同版本编译器可能需要类型转换。(Alt +Enter提供类型转换处理)

2、(方式二)当前Activity类实现监听器接口

该方法使当前Activity类实现相应的监听器接口,完成监听器中的抽象方法,组件绑定监听器时,监听器对象为Activity对象。代码如下

 public class MainActivity extends AppCompatActivity implements View.OnClickListener {

     @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); Button btnClick = findViewById(R.id.btn_click);//控件的获取
btnClick.setOnClickListener(MainActivity.this);
//需要传入接口实现类的实例。
//此时接口实现类的实例为MainActivity
} @Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btn_click:
//里面写点击后想要实现的效果
Toast.makeText(MainActivity.this,
"按钮被点击", Toast.LENGTH_SHORT).show();
//这里是弹出一个消息---"按钮被点击"
}
}
}

【提示】先写MainActivity的实现implements View.OnClickListener,然后会出现红线,把鼠标点在红线上,Alt+Enter添加未实现的方法 onclick

【注意】不要忘记将接口实现的实例传给组件的setXXXListener方法

3、XML布局文件中设置回调方法

该方法是在XML布局文件中设置回调方法,在Java代码中实现该方法即可。

【提示】此方法不是一个通用的方法,但对按钮等常用组件的点击事件处理确实很方便。

①activity_main.xml 布局文件中添加onclick 属性,设定回调方法,具体代码如下

 <Button
android:id="@+id/btn_click"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="Click" />

【注意】当设置Click方法时,java代码中的Click方法还未创建,Click下方会出现红色波浪线,不用着急,在MainActivity中添加java代码即可

②MainActivity.java

     public  void Click(View view){
switch (view.getId()){
case R.id.btn_click://此处是对布局中设置的id直接进行判断,
// 不需要对控件进行获取(findviewByID)
Toast.makeText(this, "按钮被点击", Toast.LENGTH_SHORT).show();
break;
}
}

【提示】此时的方法和方法二中的onClick方法不同,但里面的写法与方法二相同。(如果是只有一个控件添加了onclick属性为Click,可以直接写效果代码,但不建议这样写)

Android 组件的三种点击事件写法的更多相关文章

  1. Android按钮的四种点击事件

    本文记录一下按钮的四种点击事件 第一种 public class MainActivity extends Activity { @Override protected void onCreate(B ...

  2. android学习之4种点击事件的响应方式

    如题,下面就一一列出对点击事件响应的4种方式: 第一种:内部类的形式: package com.example.dail; import android.net.Uri; import android ...

  3. Android中Button四种点击事件实现方式

    1.Xml添加监听属性,这里添加的doClick. <Button android:id="@+id/bt1" android:layout_width="wrap ...

  4. android中的4种点击事件

    四种点击事件     (1)采用内部类的方式去实现OnClickListener      (2)匿名内部类     (3)当前类imp OnClickListener      (4)onclick ...

  5. Button控件的三种点击事件

    ①在布局文件中指定onClick属性的方法设置点击事件 ②使用匿名内部类的方法设置点击事件 ③实现Activity实现OnClickListen接口的方式设置点击事件 linear.xml文件 < ...

  6. Android Button的四种点击事件

    bta1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.m ...

  7. Android入门——电话拨号器和四种点击事件

    相对于HelloWorld来说,电话拨号器也是Android的一个入门demo,从这个样例我们要理清楚做安卓项目的思路. 大体分为三步: 1.理解需求,理清思路 2.设计UI 3.代码实现 电话拨号器 ...

  8. Android入门——电话拨号器和4种点击事件

    关于HelloWorld为,电话拨号程序还AndroidA入门demo,从这个样例我们要理清楚做安卓项目的思路. 大体分为三步: 1.理解需求,理清思路 2.设计UI 3.代码实现 电话拨号器 1.  ...

  9. wemall app商城源码中android按钮的三种响应事件

    wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码中android按 ...

随机推荐

  1. Redis 常用操作命令,非常详细!

    下面总结并演示了 Redis 的 常用管理命令.key 操作.字符串.集合.列表.散列类型的操作命令. 你需要掌握的 Redis 知识 史上最全 Redis 高可用解决方案总结 为什么分布式一定要有R ...

  2. 五分钟了解node,cnpm和yarn

    1.静态网页和动态网页 动态网页:数据可以进行交互,动态改变数据 2.node node是基于chrome的V8引擎的javascript的运行环境,node中的事件机制以及非阻塞式的I/O式模式,使 ...

  3. Ocelot简易教程(三)之主要特性及路由详解

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9664977.html 上篇<Ocelot简易教程(二)之快速开始2>教大家如何快速跑起来一个 ...

  4. 使用 Infer.NET 进行概率编程

    本文介绍了如何使用 Infer.NET 进行概率性编程. 概率性编程是一种将自定义模型表示为计算机程序的机器学习方法. 借助它可以在模型中包含专业知识,使机器学习系统更易理解. 它还支持在线推断,即在 ...

  5. ①小姐,来桶全家桶不?(Servlet)

    一.前言 小生不才,大二下半学期第二个星期,近11月博客园.星期六闲来看看经典书.重温下Serlvet. 二.温故而知新:超文本转移协议HTTP HTTP协议是通过互联网(internet)或企业内部 ...

  6. struts转发和重定向action

    1.转发(服务器端跳转) <action name="rederTo"> <result type="chain">hello</ ...

  7. 一文带你学会使用YOLO及Opencv完成图像及视频流目标检测(上)|附源码

    计算机视觉领域中,目标检测一直是工业应用上比较热门且成熟的应用领域,比如人脸识别.行人检测等,国内的旷视科技.商汤科技等公司在该领域占据行业领先地位.相对于图像分类任务而言,目标检测会更加复杂一些,不 ...

  8. Java 容器源码分析之 LinkedHashMap

    同 HashMap 一样,LinkedHashMap 也是对 Map 接口的一种基于链表和哈希表的实现.实际上, LinkedHashMap 是 HashMap 的子类,其扩展了 HashMap 增加 ...

  9. spring-session用mysql实现session共享实践

    前段时间,写了篇<spring-session-data-redis解决session共享的问题>文章,介绍了spring-session使用redis存储实现session共享的内部机制 ...

  10. Go Web:数据存储(3)——gob对象序列化

    序列化持久存储gob 1.内存存储 2.CSV文件存储 3.gob序列化存储 本篇文章仍然接前面的文章:内存存储,主要介绍将博客文章数据序列化持久到文件中. encoding/gob包用于编码器和解码 ...