一、准备工作

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. 描述一下 cookies,sessionStorage 和 localStorage 的区别

    cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密),数据会在浏览器和服务器间来回传递.sessionStorage和localStorage不会自 ...

  2. js对象之XMLHttpReques对象学习

    背景:业务需求是,一个前端(手机和浏览器)HTML页面中有图片,按钮......,需要统计用户点击图片或者按钮的次数. 前端实现:通过一个js来统计HTML页面中所有的图片和按钮对象,并给每个对象赋予 ...

  3. 【spring】task 任务调度(定时任务)

    1.定时任务的几种实现可以看这里:http://gong1208.iteye.com/blog/1773177 2.需要导入spring的jar包,可以参看之前的[spring]相关文章 3.这里使用 ...

  4. linux 根据端口查看系统进程

    1.lsof -i:端口号 2.netstat -tunlp|grep 端口号 注意不同用户下,查看的进程不同

  5. 关于 Spring Security OAuth2 中 Feign 调用 Token 问题

    微服务体系中,避免不了服务之间链式调用,一般使用 Feign ,由于使用 Spring Security OAuth2 全局做了安全认证,简单的一种实现方式就是在服务提供方获得 Token 再次通过 ...

  6. Java 容器 & 泛型:二、ArrayList 、LinkedList和Vector比较

    Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 继续上一篇的容器文章认识容器,泥瓦匠慢慢带你们走进List的容器解说.今天泥瓦匠想说说 ArrayLi ...

  7. samba企业级实战应用详解-技术流ken

    1.简介 Samba是一套使用SMB(Server Message Block)协议的应用程序, 通过支持这个协议, Samba允许Linux服务器与Windows系统之间进行通信,使跨平台的互访成为 ...

  8. Host '127.0.0.1' is not allowed to connect to this MySQL server

    错误:Host  '127.0.0.1'  is  not  allowed  to  connect  to  this  MySQL  server 一般原因: MySQL数据库的配置文件my.i ...

  9. C#基础知识回顾:1.由WeakReference想到对象的创建与销毁

    .Net Framework中,把资源分为托管资源和非托管资源两大类, 托管资源指可以通过.Net Frame垃圾回收器进行回收的资源,主要是指分配在托管堆上你的内存资源,这类资源的回收是不需要人工干 ...

  10. Android Studio 使用Menu

    首先在res目录下创建一个文件夹名字随意 在对创建的文件夹下在创建一个菜单 名字随意 参看布局 可以看到你的菜单 可以选择添加是么样的菜单 接着要到主活动中重写 onCreateOptionsMenu ...