Android回调监听的实现
一、首先定义监听函数
public interface OnKeyValueListener {
void getKeyValueClick(String value);
}
二、在需要传递内容的 A类 中传入该监听对象
2.1 获取监听
public class MyButton {
public MyButton(Context context) {
}
private OnKeyValueListener mOnkeyValueListener; //定义监听接口,接受Main类传过来的监听对象
//模拟用户触摸屏幕时系统底层进行的操作
public void doClick() {
mOnkeyValueListener.getKeyValueClick("点击了A"); //该方法可以在A类跟Main类中调用,都会将内容传给Main类。这句话就实现了监听的效果
}
public OnKeyValueListener getmOnkeyValueListener() {
return mOnkeyValueListener;
}
public void setmOnkeyValueListener(OnKeyValueListener mOnkeyValueListener) {
this.mOnkeyValueListener = mOnkeyValueListener; //Main类中调用该方法,传入监听对象
}
}
2.2 传递内容
在该类中需要调用的地方实现监听函数方法
mOnkeyValueListener.getKeyValueClick("点击了A"); //该方法可以在A类跟Main类中调用,都会将内容传给Main类。这句话就实现了监听的效果
三、传入监听函数,并实现方法
public class MainActivity extends Activity implements OnKeyValueListener{
MyButton myButton ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myButton = new MyButton(MainActivity.this);
myButton.setmOnkeyValueListener(this); //传递监听对象到A类
myButton.doClick(); //这里是调用A类中的方法,接受到A类传入的内容
}
@Override
public void getKeyValueClick(String value) {
Log.d("panzq","######## value = "+value); //打印获取到的内容
}
}
结果
2019-04-17 12:55:38.285 3660-3660/com.panzq.callbacklistener D/panzq: ######## value = 点击了A
1.为按钮setmOnkeyValueListener注册监听,将括号里面的this作为参数传给MyButton,this继承了 OnKeyValueListener
2.由于MyButton中有一个setmOnkeyValueListener方法,通过this.mOnkeyValueListener = mOnkeyValueListener;;可以将第一步传进来的OnKeyValueListener对象赋给其成员变量
3.用户点击屏幕,触发系统底层的doClick函数
4.在doClick函数中mOnkeyValueListener.getKeyValueClick("点击了A")中,由第二步我们已知listener已被赋予成用户传进来的具体实现,所以此时的 mOnkeyValueListener.getKeyValueClick("点击了A");所调用的方法就是用户传进来的listener中重写的getKeyValueClick方法,到这里也就是相当于反过来调用回用户所重写的getKeyValueClick(),这里的getKeyValueClick也就是我们常说的回调方法。
Android回调监听的实现的更多相关文章
- Android来电监听和去电监听
我觉得写文章就得写得有用一些的,必须要有自己的思想,关于来电去电监听将按照下面三个问题展开 1.监听来电去电有什么用? 2.怎么监听,来电去电监听方式一样吗? 3.实战,有什么需要特别注意地方? 监听 ...
- Android ScrollView监听滑动到顶部和底部的两种方式(你可能不知道的细节)
Android ScrollView监听滑动到顶部和底部,虽然网上很多资料都有说,但是不全,而且有些细节没说清楚 使用场景: 1. 做一些复杂动画的时候,需要动态判断当前的ScrollView是否滚动 ...
- Android 如何监听返回键,弹出一个退出对话框
android 如何监听返回键点击事件,并创建一个退出对话框, 防止自己写的应用程序不小心点击退出键而直接退出.自己记录下这个简单的demo,备用. public class BackKeyTest ...
- Android如何监听蓝牙耳机的按键事件
写在前面: 直接想要代码很简单,你直接把滚动条拉到最底端就可以看到.如果想要十分地了解为什么,那就按照我规划的一步一步来理解.以下测试环境以手头上有的「Bluedio + 红米手机」. 1.蓝牙耳机的 ...
- Android如何监听蓝牙耳机的按键事件(转)
源: Android如何监听蓝牙耳机的按键事件 写在前面: 直接想要代码很简单,你直接把滚动条拉到最底端就可以看到.如果想要十分地了解为什么,那就按照我规划的一步一步来理解.以下测试环境以手头上有的「 ...
- Android实时监听网络状态
Android实时监听网络状态(1) 其实手机在网络方面的的监听也比较重要,有时候我们必须实时监控这个程序的实时网络状态,android在网络断开与连接的时候都会发出广播,我们通过接收系统的广播就 ...
- xamarin android如何监听单击事件
在xamarin android单击事件是最基础的事情,看过菜鸟上的android教程时,java写的都是监听事件,为一个按钮,单选按钮.多选按钮的单击事件有三种,前面两种用的非常普遍,也很简易,我这 ...
- Android 监听 Android中监听系统网络连接打开或者关闭的实现代码
本篇文章对Android中监听系统网络连接打开或者关闭的实现用实例进行了介绍.需要的朋友参考下 很简单,所以直接看代码 复制代码 代码如下: package xxx; import android.c ...
- Android实现监听控件点击事件
Android实现监听控件点击事件 引言 这篇文章主要想写一下Android实现监听点击事件的几种方法,Activity和Fragment实现起来有些方法上会有些不同,这里也略做介绍. 最近一直在忙一 ...
随机推荐
- springboot实现简单的文件上传
承接上一篇,这里记录一下简单的springboot文件上传的方式 首先,springboot简单文件上传不需要添加额外的jar包和配置 这里贴一下后端controller层的实现代码 补一份前台的HT ...
- 有这iconfont.woff文件 为什么还报404
解决方法1.打开服务器IIS管理器,找到MIME类型. 2.添加MIME类型 添加三条: 文件扩展名 MIME类型 .svg image/svg+xml.woff application/x-font ...
- Django相关问题
遇到models模型变动后无法用migrations生成改动后的表通过以下几个方面实现 1 python manage.py makemigrations yourapp(你改变的app) 2 p ...
- LOJ2276 [HAOI2017] 新型城市化 【二分图匹配】【tarjan】
题目分析: 这题出的好! 首先问题肯定是二分图的最大独立集,如果删去某条匹配边之后独立集是否会变大. 跑出最大流之后流满的边就是匹配边. 如果一个匹配边的两个端点在一个强连通分量里,那这条边删掉之后我 ...
- <数据结构基础学习>(五)递归
一. 递归 本质上,将原来的问题,转化为更小的同样的问题 举例:数组求和 Sum(arr[0... n-1]) = arr[0] + Sum(arr[1...n-1]) 第二部分为更小的同一个问题 ...
- Spring Boot 集成 Spring Security 实现权限认证模块
作者:王帅@CodeSheep 写在前面 关于 Spring Security Web系统的认证和权限模块也算是一个系统的基础设施了,几乎任何的互联网服务都会涉及到这方面的要求.在Java EE领 ...
- Axure8.0 如何在函数里直接更改文本颜色?
在用Axure8.0做中继器一个练习时,有个文本标签想改变颜色,没有找到地方,不经意间在某吧里面看到了帖子,非常感谢,赶紧记下来! 好了 大功告成!再也不会为这个小细节烦恼了!
- keepalived 安装及配置
简介 Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat.corosync.pacemaker. 但是它一般不会单独出现, ...
- 老男孩Python全栈学习 S9 日常作业 011
1.编写装饰器,为函数加上统计时间的功能 import time def Decoration(func): def Timmer(): # 开始时间 Start = time.time() func ...
- 003 win7如何配置adb环境变量
1.首先右击计算机——属性——高级系统设置——环境变量: 2.弹出”环境变量“对话框,单击”新建“一个环境变量. 3.在新建系统变量里,配置变量名:Android 变量值:D:\Users\Admin ...