一、准备工作

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. 本地Oracle客户端11g升级12c导致PowerCenter无法连接ODBC数据源

    问题: 本地Oracle客户端由11g-32bit升级为12c-64bit时,在PowerCenter Designer使用原来的ODBC连接导入数据库表时,发生如下错误: 原因: 原oracle11 ...

  2. Swift中空合运算符、闭区间运算符、单侧区间、半开区间

    空合运算符(Nil Coalescing Operator) 用于取代3目判空运算,提供超短的写法比如常规判空写法如下,反正我写java就是这么干的 var anOptionalInt: Int? = ...

  3. Postgresql-模糊匹配大杀器

    # Postgresql-模糊匹配大杀器 ## 问题背景 随着pg越来越强大,abase目前已经升级到5.0(postgresql10.4),目前abase5.0继承了全文检索插件(zhparser) ...

  4. cp2102 驱动 win7x64 -2018

    试了好多种网上的驱动,都不行,要么是报错要么是安装没反应 之后意外遇见驱动官网?里面真全 url:https://www.silabs.com/products/development-tools/s ...

  5. Unity3D热更新之LuaFramework篇[01]--从零开始

    前言 因工作关系,需要对手头的项目进行热更新支持.了解后发现,Lua的几个变种:XLua.ToLua(原uLua)和Slua都可以做Unity热更,而ToLua更是提供了一个简易的热更框架--LuaF ...

  6. Thrown "KeeperErrorCode = Unimplemented for /services" exception

    1.环境 spring-boot 2.1.3 依赖项:spring-cloud-starter-zookeeper-discovery 版本2.1.1 使用的zookeeper3.4.11 代码如下: ...

  7. 使用minukube部署kubernetes admission webhook实现etcd pod安全删除

    本需求来自于一道面试题

  8. asp.net 中Repeater和Gridview的区别

             Griview:              优点:1.GridView是从WebControl派生出来的,拥有WebControl样式属性,自身会被解析为table,其中的每一行会被 ...

  9. 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny"),或者 是通过包含 overrideMode="Deny" 或旧有的 allowOverride="false" 的位置标记明确设置的。

    问题: 不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含 overr ...

  10. C#调用C++(QT5.5.1项目)的C++/CLI(CLR项目)项目技术笔记

    导航 1.编译环境 2.项目配置 1.设置附加包含目录 2.设置附加库目录 3.设置附加依赖项 3.CLR中各种定义 1.接口定义 2.类定义 3.枚举定义 4.属性定义 4.CLR中各种使用 1.类 ...