Android为按钮控件绑定事件的五种实现方式

一、写在最前面

本次,来介绍一下安卓中为控件--Button绑定事件的五种方式。

二、具体的实现

第一种:直接绑定在Button控件上:

步骤1.在Button控件上设置android:onClick=",其中这个属性的属性值对应的是MainActivity类中的方法名字(自己创建的方法):

步骤2.在MainActivity类中创建相对应的方法:

 public void demo(View view){
      Toast.makeText(MainActivity.this, "第二个按钮被点击了",Toast.LENGTH_SHORT).show();
  }

 第二种:使用匿名内部类的方式:

步骤1.首先需要获取到 layout 中布局页面的Button控件中指定的Id:

步骤2.之后为这样按钮绑定监听器,使用匿名内部类的方式,代码如下:

button = (Button)findViewById(R.id.button1);
    button.setOnClickListener(new OnClickListener() {  

      @Override
      public void onClick(View view) {

          Toast.makeText(MainActivity.this, "通过匿名内部类:第一个按钮被点击了",Toast.LENGTH_SHORT).show();

      }
    });

第三种:使用外部类的方式

步骤1.需要获取到 layout 布局页面中的Button控件中指定的Id(在MainActivity中): 

button=(Button)findViewById(R.id.button2)

步骤2.创建一个类,并且实现 OnClickListener 接口,重写这个接口中的 OnClick 方法,并且为这个方法创建一个 Context 属性(之后的Toast需要使用到),使用构造器设置这个属性值:

package com.mqz.android_event_test;

import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class BtnTest implements OnClickListener {

  private Context context;
  public BtnTest(Context context){
    this.context=context;
  }

  @Override
  public void onClick(View view) {

      Toast.makeText(context, "通过外部类实现OnClickListener接口:第一个按钮被点击了",Toast.LENGTH_SHORT).show();

  }

}

步骤3.为获取到的按钮绑定事件,并且把当前对象传入

button.setOnClickListener(new BtnTest(this))

第四种:使用MainActivity直接实现OnClickListener接口的方式

步骤1.在 MainActivity 中实现 OnClickListener 接口,并且重写 OnClick 方法:

步骤2.绑定button按钮相对应的监听,把当前对象传入:

特点:

1.这样是的MainActivity类成为了监听器类,这样的方式十分简洁

2.但是这样容易引起结构的混乱,因为MainActivity类主要职责来初始化界面的,这加入了事件处理器的方法,引起混乱。

3.界面类需要实现监听器的方法,有点不伦不类。      

package com.mqz.android_event_test;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener{

  private Button button;

  @Override
  public void onClick(View view) {

      Toast.makeText(MainActivity.this, "通过MainActivity实现OnClickListener接口:第一个按钮被点击了",Toast.LENGTH_SHORT).show();

  }

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button = (Button)findViewById(R.id.button2);
    button.setOnClickListener(this);

  }

}

第五种:使用成员内部类的方式来实现button按钮事件的绑定

步骤1.获取 layout 布局文件中的Button控件的 Id:

button=(Button)findViewById(R.id.button2)

步骤2.在 MainActivity 类中创建一个成员内部类,并且实现 OnClickListener 接口,重写 OnClick 方法:

class BtnTest1 implements OnClickListener{
    @Override
    public void onClick(View view) {

        Toast.makeText(MainActivity.this, "通过成员内部类:第二个按钮被点击了",Toast.LENGTH_SHORT).show();

    }

  }

步骤3、在这个按钮中绑定相关的事件,new 内部类()即可,不需要传入上下文对象,因为这个类是当前类的内部类:

好处:

1.成员内部监听器的方式可以访问外部类的中的所有属性,所以在new OnClickListener实现类 对象的时候不需要传入当前对象

2.成员内部监听器可以让外部类重复使用,因为成员内部监听器是外部类的内部类 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android中activity跳转按钮事件的四种写法

    具体实现代码: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 方法1. 采用实现OnClickListener接口的类 ((Button) findViewById(R.i

  • android防止提交事件时触发多个表单中的按钮

    单击拍照 button ,执行该函数 getPhoto() ,窗体执行的函数 funcSubmit() ng-submit 自动. 什么会需要更改,以防止这种情况发生?它执行的功能只有 getPhoto() 而无需运行 ng-submit 的形式. Ps.: 这段代码是应用程序的一部分 android 移动,用离子框架开发 <ion-view title="OS"> <form ng-submit = "funcSubmit()"> <

  • android为ListView每个Item上面的按钮添加事件

    本文介绍了ListView给每个Item上面的按钮添加事件,具体如下: 1.先看下效果图: 在这里仅供测试,我把数据都写死了,根据需要可以自己进行修改,此外实现ListView上面每个Item上的Button的事件有两种方法: 1.使用final变量扩展局部变量的生命周期范围主要代码(本文最后附全部代码): //注意原本getView方法中的int position变量是非final的,现在改为final @Override public View getView(final int posit

  • android中在Activity中响应ListView内部按钮的点击事件的两种方法

    最近交流群里面有人问到一个问题:如何在Activity中响应ListView内部按钮的点击事件,不要在Adapter中响应? 对于这个问题,我最初给他的解答是,在Adapter中定义一个回调接口,在Activity中实现该接口,从而实现对点击事件的响应. 下班后思考了一下,觉得有两种方式都能比较好的实现:使用接口回调和使用抽象类回调. 正好可以复习一下接口和抽象类的区别,于是写了两个Demo: 1.使用接口回调: Adapter类 package com.ivan.adapter; import

  • android监听返回按钮事件的方法

    本文实例讲述了android监听返回按钮事件的方法.分享给大家供大家参考.具体如下: 用户在点击手机的返回按钮时,默认是推出当前的activty,但是有时用户不小心按到返回,所以需要给用户一个提示,这就需要重写onkeydown事件,实现的效果如下: java代码如下: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.l

  • 安卓(Android)动态创建多个按钮并添加监听事件

    1.获取屏幕大小,以合理设定 按钮 大小及位置 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int width = dm.widthPixels; int height = dm.heightPixels; 2.自定义layout组件 RelativeLayout layout = new RelativeLayout(this); 3.这里创建1

  • Android防止按钮过快点击造成多次事件的解决方法

    问题 onClick事件是Android开发中最常见的事件.比如,一个submitButton,功能是点击之后会提交一个订单, 则一般代码如下,其中submitOrder()函数会跳转到下一页进行处理 : //代码0 submitButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { submitOrder(); } }); 正常情况下这段代码是没什么问题的,但是Andro

  • Android按钮单击事件的四种常用写法总结

    很多学习Android程序设计的人都会发现每个人对代码的写法都有不同的偏好,比较明显的就是对控件响应事件的写法的不同.因此本文就把这些写法总结一下,比较下各种写法的优劣,希望对大家灵活地选择编码方式可以有一定的参考借鉴价值. xml文件代码如下: <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_conte

  • Android为按钮控件绑定事件的五种实现方式

    一.写在最前面 本次,来介绍一下安卓中为控件--Button绑定事件的五种方式. 二.具体的实现 第一种:直接绑定在Button控件上: 步骤1.在Button控件上设置android:onClick=",其中这个属性的属性值对应的是MainActivity类中的方法名字(自己创建的方法): 步骤2.在MainActivity类中创建相对应的方法: public void demo(View view){ Toast.makeText(MainActivity.this, "第二个按钮

  • Android开发实现控件双击事件的监听接口封装类

    写项目时,要求仿微信朋友圈,双击顶栏置顶,于是封装了双击回调接口,方便大家拿来就用 /** * Created by Administrator on 2018/4/24. * 双击 */ public class OnDoubleClickListener implements View.OnTouchListener{ private int count = 0;//点击次数 private long firstClick = 0;//第一次点击时间 private long secondC

  • DropDownList控件绑定数据源的三种方法

    本文给大家分享web  中 DropDownList绑定数据源的几种方式,先给大家分享三种常见的方式,具体详情如下所示:  第一种 this.ddltype.DataTextField = "btName";//显示的值 this.ddltype.DataValueField = "btId";//获取dropdownlist中的值 ddltype.DataSource = service.GetBusinessTypeAll(""); this

  • Android中获取控件宽高的4种方法集合

    借鉴自开发艺术 1.onWindowFocusChanged 这个方法会被调用多次,在View初始化完毕后会调用,当Activity的窗口得到焦点和失去焦点都会被调用一次(Activity继续执行和暂停执行时). @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus) { int width = view.getMeasur

  • ASP.NET中DropDownList下拉框列表控件绑定数据的4种方法

    DropDownList Web 服务器控件使用户能够从预定义的列表中选择一项.它与 ListBox Web 服务器控件的不同之处在于,其项列表在用户单击下拉按钮之前一直处于隐藏状态.另外,DropDownList 控件与 ListBox 控件的不同之处还在于它不支持多重选择模式. DropDownList在html中的呈现对应的是select,下面让我们来看一下DropDownList绑定数据的几种方法. 一.把Array数组绑到DropDownList 复制代码 代码如下: string[]

  • jQuery绑定事件的几种实现方式

    本文实例为大家分享了jQuery绑定事件多种实现方法,供大家参考,具体内容如下 <html> <head> <meta charset="utf-8" /> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script><!--百度CDN--> </head> <body> <input ty

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

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

  • Vue.js事件处理器与表单控件绑定详解

    事件处理主要通过v-on这个指令来执行. 事件监听及方法处理 1.简单的可以直接内嵌在页面. 2.可以通过将方法定义在methods中,然后再v-on中执行 3.可以通过绑定给函数传递参数,还可以传递通过变量$event给函数传递原生DOM事件. <div id="app-1"> <button v-on:click="counter += 1">增加1</button> <p>这个按钮被点击了{{counter}}&

  • Android 自定义Button控件实现按钮点击变色

    效果图如下所示: 一.shape 样式:(在drawable新建-->new-->Drawable resource file 在父级标签selector添加Item ) <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item and

  • Android中ToggleButton开关状态按钮控件使用方法详解

    ToggleButton开关状态按钮控件使用方法,具体内容如下 一.简介 1. 2.ToggleButton类结构 父类是CompoundButton,引包的时候注意下 二.ToggleButton开关状态按钮控件使用方法 1.新建ToggleButton控件及对象 private ToggleButton toggleButton1; toggleButton1=(ToggleButton) findViewById(R.id.toggleButton1); 2.设置setOnCheckedC

随机推荐