Android如何添加控件监听器(三种方式)

目录
  • 本文概述:
  • 方式一:在布局中添加onClick属性
  • 方式二:采用匿名内部类
  • 方式三:MainActivity 实现 View.OnClickListener 接口

本文概述:

  • 本文介绍了,在Android中为控件添加监听的三种常见方式

    • 设置控件的onClick属性
    • 采用匿名内部类
    • MainActivity 实现 View.OnClickListener 接口

方式一:在布局中添加onClick属性

  • 编写思路:

    • 在布局文件中:

      • 指定控件 id
      • 指定控件onClick属性
    • 在MainActivity中:
      • 在onCreate中拿到控件实例
      • 在onCreate之外,创建监听方法(方法名与前面设置的onClick属性相同)
  • 布局代码:指定控件的onClick属性(已经被废弃掉了)
    <Button
        ……
        android:id="@+id/button"
        android:onClick="buttonClick"
        …… />
    
  • Activity代码:
    public class MainActivity extends AppCompatActivity {
    ​
        private Button button;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
            //获取控件示例
            button = findViewById(R.id.button);
        }
    ​
        public void buttonClick(View view) {
           setToast("点击了button按钮");
        }
    ​
        public void setToast(String string){
            Toast.makeText(this,string,Toast.LENGTH_SHORT).show();
        }
    }
    
  • 运行结果:可不可以限定Toast的提示位置?比如说将Toast放在中间去

方式二:采用匿名内部类

  • 编写思路:

    • 在布局文件中:指定控件 id
    • 在MainActivity中
      • 在onCreate内:

        • 获取控件实例
        • 为控件添加监听(使用匿名内部类重写onClick方法)
  • 布局代码:此时不能设置onClick属性
    <Button
        ……
        android:id="@+id/button"
        …… />
    
  • Java 代码
    public class MainActivity extends AppCompatActivity {
    ​
        private Button button;
    ​
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
    ​
            //获取控件示例
            button = findViewById(R.id.button);
    ​
            //添加监听
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    setToast("点击了按钮");
                }
            });
        }
    ​
        public void setToast(String string){
            Toast.makeText(this,string,Toast.LENGTH_SHORT).show();
        }
    }
    
  • 运行结果:

方式三:MainActivity 实现 View.OnClickListener 接口

  • 编写思路:

    • 在布局文件中:

      • 指定控件 id
    • 在MainActivity声明处:实现 View.OnClickListener 接口
    • 在MainActivity中:
      • 在onCreate方法内:

        • 拿到控件实例
        • 为控件注册监听器
      • 在onCreate方法外:重写onClick方法
  • 布局代码:
    <Button
        ……
        android:id="@+id/button"
        …… />
    
  • MainActivity 代码
    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    ​
        private Button button;
    ​
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
    ​
            //获取控件示例
            button = findViewById(R.id.button);
            //为控件注册监听器
            button.setOnClickListener(this);
        }
    ​
        public void setToast(String string){
            Toast.makeText(this,string,Toast.LENGTH_SHORT).show();
        }
    ​
        @Override
        public void onClick(View view) {
            setToast("按钮被点击了");
        }
    }
    
  • 运行效果:

到此这篇关于Android如何添加控件监听器(三种方式)的文章就介绍到这了,更多相关Android 控件监听器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android控件系列之Button以及Android监听器使用介绍

    学习目的: 1.掌握在Android中如何建立Button 2.掌握Button的常用属性 3.掌握Button按钮的点击事件(监听器) Button是各种UI中最常用的控件之一,它同样也是Android开发中最受欢迎的控件之一,用户可以通过触摸它来触发一系列事件,要知道一个没有点击事件的Button是没有任何意义的,因为使用者的固定思维是见到它就想去点! 先看下Android中普通Button的样子: 以及点中Button后的样子: 我在Android控件系列之XML静态资源中已经强调了布局和

  • Android如何添加控件监听器(三种方式)

    目录 本文概述: 方式一:在布局中添加onClick属性 方式二:采用匿名内部类 方式三:MainActivity 实现 View.OnClickListener 接口 本文概述: 本文介绍了,在Android中为控件添加监听的三种常见方式 设置控件的onClick属性 采用匿名内部类 MainActivity 实现 View.OnClickListener 接口 方式一:在布局中添加onClick属性 编写思路: 在布局文件中: 指定控件 id 指定控件onClick属性 在MainActiv

  • android中Webview实现截屏三种方式小结

    本人最近学习了android中Webview实现截屏三种方式,下面我来记录一下,有需要了解的朋友可参考.希望此文章对各位有所帮助. 第一种方式 通过调用webview.capturePicture(),得到一个picture对象,根据图像的宽和高创建一个Bitmap,再创建一个canvas,绑定bitmap,最后用picture去绘制. //获取Picture对象 Picture picture = wv_capture.capturePicture(); //得到图片的宽和高(没有reflec

  • vue中向data添加新属性的三种方式小结

    目录 向data添加新属性的三种方式 原理分析 三种方式 vue组件 data等属性介绍 向data添加新属性的三种方式 原理分析 首先在了解这三种方式之前,我觉的有必要说一下,为啥不能直接手动给data中的对象添加属性呢? 下面咱们一块分析下: vue2 是通过数据劫持 “Object.defineProperty” 实现数据响应式:     const obj = {};         let val = 'kk'         Object.defineProperty(obj,'na

  • Android 获得屏幕宽高的三种方式

    老风格,废话不多说了,直接给大家贴android获取屏幕宽高的代码了. 主要代码: package com.km.screeninfo; import android.os.Bundle; import android.support.v.app.Fragment; import android.support.v.app.FragmentActivity; import android.util.DisplayMetrics; import android.view.LayoutInflate

  • Android解析json数据示例代码(三种方式)

    Json数据 复制代码 代码如下: [{"code":"110000","sheng":"11","di":"00","xian":"00","name":"北京市","level":1},{"code":"659004","sheng&q

  • Intellij IDEA 添加jar包的三种方式(小结)

    一.直接复制:(不推荐) 方法:直接将硬盘上的jar包复制粘贴到项目的lib目录下即可. 注意: 1.对于导入的eclipse项目,该方式添加的jar包没有任何反应,用make编译项目会报错 2.对于在idea中创建的项目,该方式添加jar包,编译不报错,但是打开Structure会有"...jar ... is missing ..."的提示,需要点击"Fix"或红灯泡解决. 二.通过Modules的Dependencies添加:(推荐) 1.打开 File -&

  • asp.net 遍历repeater中的控件的几种方式

    方式1: 复制代码 代码如下: foreach (Control c in this.Repeater1.Controls) { HtmlInputCheckBox check = (HtmlInputCheckBox)c.FindControl("cbDelete1"); if( check != null ) { check.Checked = true; } } 方式2: 复制代码 代码如下: for (int i=0;i<this.Repeater1.Items.Coun

  • Android开发之基本控件和四种布局方式详解

    Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方式Android和iOS还是区别挺大的,在iOS中有Frame绝对布局和AutoLayout相对布局.而在Android中的布局方式就比较丰富了,今天博客中会介绍四种常用的布局方式.先总结一下控件,然后再搞一搞基本方式,开发环境还是用的Mac下的Android Studio.开始今天的正题, 虽然A

  • Android ListView里控件添加监听方法的实例详解

    Android ListView里控件添加监听方法的实例详解 关于ListView,算是android中比较常见的控件,在ListView我们通常需要一个模板,这个模板指的不是住模块,而是配置显示在ListView里面的东西,今天做项目的时候发现想要添加一个ImageView监听方法,发现崩了,也许是好久没有动ListView竟然忘了不能直接在主UI的xml文件里面调用其他xml文件的控件,哪怕ListView用的是这个xml文件. [错误示范]: 直接调用ImageView这个控件是ListV

  • Android自定义控件之自定义组合控件(三)

    前言: 前两篇介绍了自定义控件的基础原理Android自定义控件基本原理详解(一).Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发成本,以及维护成本. 使用自定义组合控件的好处? 我们在项目开发中经常会遇见很多相似或者相同的布局,比如APP的标题栏,我们从三种方式实现标题栏来对比自定义组件带来的好处,毕竟好的东西还是以提高开发效率,降低开发成本为导向的.  1.)第一种方式:直接在每个xml布局中写相同的标题栏布局代码 <?xml v

随机推荐