博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
droid开发中监听器的三种实现方法(OnClickListener)
阅读量:6646 次
发布时间:2019-06-25

本文共 3333 字,大约阅读时间需要 11 分钟。

Android开发中监听器的实现有三种方法,对于初学者来说,能够很好地理解这三种方法,将能更好地增进自己对android中监听器的理解。

一、什么是监听器。

监听器是一个存在于View类下的接口,一般以On******Llistener命名,实现该接口需要复写相应的on****(View v)方法(如onClick(View v))。

二、监听器的三种实现方法

(以OnClickListener为例)

方法一:在Activity中定义一个内部类继承监听器接口(这里是OnClickListener)。常见的继承方法如下:

class MyListener implements View.OnClickListener{        @Override        public void onClick(View v) {            Toast.makeText(MainActivity.this,"you have clicked Button2",Toast.LENGTH_SHORT).show();        }    }

或者可以用另外一种方式,即new一个该监听器(OnClickListener)的对象,这个方式与上面的直接继承有异曲同工之妙。

// 或者,这里是创建一个OnClickListener 的对象,与上面的直接复写接口有异曲同工之妙    private View.OnClickListener MyListener = new View.OnClickListener() {        @Override        public void onClick(View v) {            Toast.makeText(MainActivity.this,"you have clicked Button2",Toast.LENGTH_SHORT).show();        }    };

以上两个实现的监听器在onCreate(Bundle savedInstanceState)方法中的调用都是一样的,即使用setOnClickListener()方法。

bt2.setOnClickListener(new MyListener());

方法二:实现匿名内部类。这种方法适合只希望对监听器进行一次性使用的情况,在该代码块运行完毕之后,该监听器也就不复存在了。

bt1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(MainActivity.this,"you have clicked Button1",Toast.LENGTH_SHORT).show();            }        });

方法三:利用布局文件中的onClick属性,并在实现文件中实现该方法。注意的是这里的方法名应该和布局文件中onClick属性的方法名相同,该方法必须是public方法。

// 方法三,注意需要public方法    public void onButtonClick (View view){        Toast.makeText(MainActivity.this,"you have clicked Button3",Toast.LENGTH_SHORT).show();    }}

在布局文件中的设置

以上就是android中实现监听器的三种方法。

下面是整个项目的完整代码

布局文件:

实现文件:

package com.example.jeffrey.listener;import android.content.DialogInterface;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Button bt1 = (Button)findViewById(R.id.button1);//对应方法二        Button bt2 = (Button)findViewById(R.id.button2);//对应方法一        bt1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(MainActivity.this,"you have clicked Button1",Toast.LENGTH_SHORT).show();            }        });        bt2.setOnClickListener(new MyListener());    }    class MyListener implements View.OnClickListener{        @Override        public void onClick(View v) {            Toast.makeText(MainActivity.this,"you have clicked Button2",Toast.LENGTH_SHORT).show();        }    }    // 或者,这里是创建一个OnClickListener 的对象,与上面的直接复写接口有异曲同工之妙    private View.OnClickListener MyListener = new View.OnClickListener() {        @Override        public void onClick(View v) {            Toast.makeText(MainActivity.this,"you have clicked Button2",Toast.LENGTH_SHORT).show();        }    };    // 方法三,注意需要public方法    public void onButtonClick (View view){        Toast.makeText(MainActivity.this,"you have clicked Button3",Toast.LENGTH_SHORT).show();    }}

输出结果:当点击相应按钮时会出现“you have clicked Button?”的提示。

总结:三种方法可以说各有好处。第一种方法是新手入门必学。相对于第一种方法,后来两种方法在android开发中是比较常见的,也是大神们经常推荐使用的方法。至于自己想要使用那种方法,就看自己兴趣了。

转载地址:http://uzrvo.baihongyu.com/

你可能感兴趣的文章
重新认识java-System类
查看>>
Maven快速教程
查看>>
HTTPS 客户端发送请求(四)
查看>>
spring 配置hibernate事务处理
查看>>
java各种获取路径的方法
查看>>
删除centos虚拟桥接网卡
查看>>
ansible 学习 (二)
查看>>
基于PlayScala开发的谷歌搜索镜像
查看>>
iOS TextField设置大全
查看>>
im架构
查看>>
jsp程序中的验证码的成生和处理。
查看>>
JavaWeb中验证码的实现
查看>>
Spring Boot 注册 Servlet 的三种方法,真是太有用了!
查看>>
昨天,整个GEC沸腾了
查看>>
设计模式本身
查看>>
maven入门
查看>>
RabbitMQ安装部署文档
查看>>
Spring Boot下使用WebSocket实现消息推送
查看>>
多媒体扫盲
查看>>
手机端开发,基于HTML5、css、jquery mobile的心得
查看>>