Android 组件的三种点击事件写法
一、准备工作
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 组件的三种点击事件写法的更多相关文章
- Android按钮的四种点击事件
本文记录一下按钮的四种点击事件 第一种 public class MainActivity extends Activity { @Override protected void onCreate(B ...
- android学习之4种点击事件的响应方式
如题,下面就一一列出对点击事件响应的4种方式: 第一种:内部类的形式: package com.example.dail; import android.net.Uri; import android ...
- Android中Button四种点击事件实现方式
1.Xml添加监听属性,这里添加的doClick. <Button android:id="@+id/bt1" android:layout_width="wrap ...
- android中的4种点击事件
四种点击事件 (1)采用内部类的方式去实现OnClickListener (2)匿名内部类 (3)当前类imp OnClickListener (4)onclick ...
- Button控件的三种点击事件
①在布局文件中指定onClick属性的方法设置点击事件 ②使用匿名内部类的方法设置点击事件 ③实现Activity实现OnClickListen接口的方式设置点击事件 linear.xml文件 < ...
- Android Button的四种点击事件
bta1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.m ...
- Android入门——电话拨号器和四种点击事件
相对于HelloWorld来说,电话拨号器也是Android的一个入门demo,从这个样例我们要理清楚做安卓项目的思路. 大体分为三步: 1.理解需求,理清思路 2.设计UI 3.代码实现 电话拨号器 ...
- Android入门——电话拨号器和4种点击事件
关于HelloWorld为,电话拨号程序还AndroidA入门demo,从这个样例我们要理清楚做安卓项目的思路. 大体分为三步: 1.理解需求,理清思路 2.设计UI 3.代码实现 电话拨号器 1. ...
- wemall app商城源码中android按钮的三种响应事件
wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码中android按 ...
随机推荐
- mac中:不能完成此操作,因为找不到一个或多个需要的项目。(错误代码 -43)
今天使用mac删除某文件时,遇到此错误: 不能完成此操作,因为找不到一个或多个需要的项目.(错误代码 -43) 于是采用命令行删除可以正确删除:在要删除的文件夹坐在目录下执行 rm -rf tes ...
- 使用线程统计信息(Thread Statistics)
可在session log中使用线程统计信息来判断source,target或组的性能瓶颈 默认情况下,Integration Service在运行session时,使用一个reader thread ...
- PHP之ThinkPHP框架(界面)
Thinkphp框架其精髓就在于实现了MVC思想,其中M为模板.V为视图.C为控制器,模板一般是公共使用类,在涉及数据库时,一般会跟数据表同名,视图会和控制器类里的方法进行名字的一一对应. 下载及配置 ...
- 在Mac上安装MongoDB,配置全局路径
1.访问MongoDB官方下载地址 http://www.mongodb.org/downloads 2.点击“DOWNLOAD(tgz)”按钮: 3.将下载的文件压缩包解压后剪切到你的Mac中某个位 ...
- TCP/IP 笔记 - TCP数据流和窗口管理
TCP流量控制机制通过动态调整窗口大小来控制发送端的操作,确保路由器/接收端消息不会溢出. 交互式TCP连接 交互式TCP连接指该连接需要在客户端和服务器之间传输用户输入信息,如按键操作.短消息.操作 ...
- Elasticsearch实践(三):Mapping
版本:Elasticsearch 6.2.4. Mapping类似于数据库中的表结构定义,主要作用如下: 定义Index下字段名(Field Name) 定义字段的类型,比如数值型,字符串型.布尔型等 ...
- MFC控件编程之组合框跟列表框
MFC控件编程之组合框跟列表框 一丶简介 如果要使用组合框跟列表框.那么就要知道.组合框列表框是最核心的东西就是索引. 索引是从0开始的. 二丶组合框列表框常用的方法 AddString(字符串) 添 ...
- HTML语法介绍
一 基本标签(块级标签和内联标签) <hn>: n的取值范围是1~6; 从大到小. 用来表示标题. <p>: 段落标签. 包裹的内容被换行.并且也上下内容之间有一行空白. &l ...
- Perl模块管理
Perl模块管理 perl有自带的模块,还有第三方模块.自带的模块是随perl安装而安装好的,第三方模块需要从CPAN(Comprehensive Perl Archive Network)上下载并安 ...
- Django 系列博客(一)
Django 系列博客(一) 前言 学习了 python 这么久,终于到了Django 框架.这可以说是 python 名气最大的web 框架了,那么从今天开始会开始从 Django框架的安装到使用一 ...