Android实现Button按钮点击事件监听的几种方式

工作中的项目通常有多个人一起开发,而每个人都有每个人的代码风格,不注重代码规范通常是前人挖坑,后人采坑,降低项目开发效率及加大维护难度,这里分享几种安卓按钮点击事件监听的实现方式。

方式一直接在Activity中实现View.OnClickListener接口,重写onClick方法,提供所有按钮监听事件入口。这是实际项目中最常用的方式,尤其在页面有多个按钮的情况下比较适用。

package com.example.myapp;

import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;

public class MainActivity extends Activity implements View.OnClickListener {

    private Button button1;    private Button button2;

    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button1 = findViewById(R.id.button1);        button2 = findViewById(R.id.button2);        //注册监听器        button1.setOnClickListener(this);        button2.setOnClickListener(this);    }

    @Override    public void onClick(View view) {        switch (view.getId()) {            case R.id.button1:                onClickButton1(view);                break;            case R.id.button2:                onClickButton2(view);                break;            default:                break;        }    }

    private void onClickButton1(View view) {        //处理逻辑    }

    private void onClickButton2(View view) {        //处理逻辑    }}

通常页面会有多可按钮,可以在OnClick方法中通过View.getId()获取到发生点击事件的按钮Id,再进行相应的处理;建议不要直接在OnClick方法中直接处理,因为多个按钮的处理逻辑写在同一个方法中,方法体较长,可读性降低。

方式二:按钮注册监听器时直接实现监听接口,即匿名内部类的方式实现。页面只有单个按钮时比较常用。
register_btn.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View view) {        if(TextUtils.isEmpty(userName_et.getText().toString()) || TextUtils.isEmpty(pwd_et.getText().toString())) {            Toast.makeText(RegisterActivity.this, "用户名密码不能为空", Toast.LENGTH_LONG).show();            return;        }        //注册    }});

熟悉函数式编程的话,可直接写lambda表达式,代码更加简洁。

方式三:自定义一个监听器,实现View.OnClickListener接口,这与方式一类似,方式一直接在Activity中实现View.OnClickListener接口,因此它本身就是一个监听器。这里要另外实现一个监听器类。class MyListener implements View.OnClickListener{

    @Override    public void onClick(View view) {        //处理逻辑    }}

最后别忘了在Activity中注册自定义的监听器
register_btn.setOnClickListener(new MyListener());

方式四:在XMl布局文件中的OnClick属性直接注册Activity中的处理方法,Activity中的点击事件处理方法需要时public方法,底层会通过反射方式调用。这种方法不好维护,通常不好找按钮对应点击事件处理方法,不建议使用
XML布局文件:<ImageButton    android:layout_marginTop="50dp"    android:layout_height="49dp"    android:layout_width="55dp"    android:layout_gravity="center"    android:onClick="activate"    />

Activity中写相应的处理方法,访问权限是public:public void activate(View v) {    Intent intentToActivate = new Intent();    intentToActivate.setClass(this, LoginActivity.class);    startActivity(intentToActivate);}

 

原文地址:https://www.cnblogs.com/stom/p/11089156.html

时间: 2024-10-11 06:20:47

Android实现Button按钮点击事件监听的几种方式的相关文章

extjs组件添加事件监听的三种方式 http://blog.sina.com.cn/s/blog_48d7f92901011cfn.html

extjs对组件添加监听的三种方式 在定义组件的配置时设置 如代码中所示: Java代码 xtype : 'textarea', name : 'dataSetField', labelSeparator:'', fieldLabel:'', hideLabel: true, allowBlank: true, height: mainPanelHeight*0.8, anchor:'99%', listeners:{'blur':function(){ alert(1); }} 对组件变量通过

JAVA中按钮的事件监听的三种方式

JAVA中的Swing组件,按钮的重点是进行事件的监听,可以通过调用JButton的addActionListener()方法.这个方法接受一个实现ActionListener接口的对象作为参数,ActionListener接口中只包含一个actionPerformed()方法,所以如果想把事件处理的代码与JButton进行关联,就需要如下的三种做法: 第一种: public class Button extends MyFrame {    private JButton        b1

王立平--android事件监听的3种方式

第一种通常在activity组件的oncreate事件中直接定义,直接动作. 这样的方式每一个控件都定义一次.通常不方便. Button btn = (Button) findViewById(R.id.myButton); btn .setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //do something } }); 另外一种一般是在activity组件实现其接口.这样能够多外控件共

Springboot-Listener(springboot的事件监听的4种实现方式)

springboot事件监听的4种方式 第1种: 1.自定义事件MyApplicationEvent继承ApplicationEvent import org.springframework.context.ApplicationEvent; /** * Created by Administrator on 2018\11\13 0013. * 自定义事件继承ApplicationEvent */public class MyApplicationEvent extends Applicati

事件监听的三种方法

事件监听的三种方法: addTarget --用于监听一些点击.值改变等事件 代理       -- 监听一些开始.结束.选中某行等一些改变控制属性的一些事件 通知:上面都不行考虑使用通知 通知使用注意:只要监听通知就要移除通知,否则控制器销毁后,通知发送时就会找不到对象导致程序崩溃 文本框事件的监听: textfied代理只能监听开始编辑结束编辑,能否改变文字,不能监听改变文字后的情况,本项目需要 监听文本框中是否有输入,代理和addTarget都不适用. 文本框发出的三个通知: UIKIT_

注册监听的5种方式

注册监听的5种方式: 1. 内部类形式 1)写一个类实现监听接口(写类的构造器并实现监听方法)   2)组件监听绑定这个类 2. 外部类形式 3. Activity本身作为事件监听器类 1)implement xxxListener   2)实现事件处理方法 4. 内部匿名类形式 5. 直接绑定到标签 1 <!-- 在标签中为按钮绑定事件处理方法 --> 2 <Button 3 android:layout_width="wrap_content" 4 android

Android实战简易教程-第十五枪(实现ListView中Button点击事件监听)

1.main.xml <RelativeLayout 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" androi

按钮的点击事件---监听实现

button和imagebutton都拥有一个onClick事件,通过自身的.setOnClickListener(OnClickListener)方法添加点击事件 所有的控件都有一个onclick的事件,不仅仅button和ImageButton拥有: 通过点击事件的监听可以实现点击按钮之后要发生什么动作: 监听事件实现的几种写法: 匿名内部类实现 外部独立类实现 使用接口的实现 1 package com.imooc.outclassonclick; 2 3 import android.s

button按钮触发点击事件后出现自动跳转问题

在项目中遇到在点击+号按钮后出现跳转.该button在form表单内,分析原因得知,触发事件后button按钮自动提交了表单,从而出现跳转. 查找手册得知button type有三个属性值,其中默认为submit,所以在未添加type属性时,button默认为submit. 此问题在button中添加type="button"则恢复正常. 值 描述 submit 默认.按钮是提交按钮. button 按钮时可点击的按钮. reset 按钮是重置按钮(清空数据). 原文地址:https: