Fragment监听返回键(Fragment响应Activity的onKeyDown事件)Kotlin版
来源:互联网 发布:深圳软件开发培训班 编辑:程序博客网 时间:2024/05/18 12:04
在Fragment不仅仅只可以监听返回键哦,所有你见过的按键都可以监听,什么A~Z,0~9,F1~F12等等我就不举例子了。至于为什么写这篇博客,因为我的项目是一个Activity+多个Fragment架构的,下面进入正题。。。。直接上代码(原创转载请标明)
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { if (keyCode == KeyEvent.KEYCODE_BACK) { if (isInterception) { if (backListener != null) { backListener!!.onbackForward() return false } } } else if (keyCode == KeyEvent.KEYCODE_STAR) { if (startListener != null) { startListener!!.onStartButtonPressed() return false } } else if (keyCode == KeyEvent.KEYCODE_POUND) { if (poundListener != null) { poundListener!!.onPoundButtonPressed() return false } } else if (keyCode == KeyEvent.KEYCODE_PERIOD) { if (pointListener != null) { pointListener!!.onPointButtonPressed() return false } } else if (keyCode == KeyEvent.KEYCODE_F1) { if (f1Listener != null) { f1Listener!!.onF1Pressed() } } else if (keyCode == KeyEvent.KEYCODE_F2) { if (f2Listener != null) { f2Listener!!.onF2Pressed() } } else if (keyCode == KeyEvent.KEYCODE_F3) { if (f3Listener != null) { f3Listener!!.onF3Pressed() } } return super.onKeyDown(keyCode, event) }
以上代码是写在MainActivity里面的,在onkeydown事件下监听不同按键的KeyKode(可以参考keycode列表传送门--->http://www.cnblogs.com/bluestorm/p/4886662.html),我这里主要监听了星号键,井号键,英文.,F1,F2,F3,有人会问为什么要监听F1,F2,F3,因为最近在做PDA,按键比较多。废话不多说,那我们怎么把这个Activity中的事件传到Fragment中呢,就是通过接口,上代码:
interface FragmentF1Listener { fun onF1Pressed()}
这里简单的举了一个例子,我们通过接口回调的方式将事件传到Fragment,所以定义了一个方法,onF1Pressed(),接下来在BaseFragment实现这个接口,从而实现接口的方法onF1Pressed(),并且在fragment中初始化Activity中定义的接口对象,下面是代码:
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) if (activity is MainActivity) { (activity as MainActivity).backListener = this (activity as MainActivity).startListener = this (activity as MainActivity).poundListener = this (activity as MainActivity).pointListener = this (activity as MainActivity).f1Listener = this (activity as MainActivity).f2Listener = this (activity as MainActivity).f3Listener = this// activity.isInterception = true } }
记得要在销毁时,消除引用,下面是代码
override fun onDestroy() { super.onDestroy() if (activity is MainActivity) { (activity as MainActivity).backListener = null (activity as MainActivity).startListener = null (activity as MainActivity).poundListener = null (activity as MainActivity).pointListener = null (activity as MainActivity).f1Listener = null (activity as MainActivity).f2Listener = null (activity as MainActivity).f3Listener = null// activity.isInterception = true } if (presenter != null) { presenter!!.onDestroy() } }
这样就可以实现正在Framgnet中监听Back,以及更多的键了
阅读全文
0 0
- Fragment监听返回键(Fragment响应Activity的onKeyDown事件)Kotlin版
- Fragment中监听onKeyDown事件
- Fragment 调用Activity onKeyDown()
- Android必知必会-Fragment监听返回键事件
- Android必知必会-Fragment监听返回键事件
- 在Activity/Fragment中设置搜索键的监听事件
- fragment监听返回键
- Fragment监听返回键
- Fragment 监听返回键
- Fragment监听返回键
- Fragment监听返回键
- Fragment监听返回键
- Android如何在Fragment中监听OnKeyDown、OnkeyUp事件
- activity与fragment---监听fragment返回键,fragment中横竖屏切换
- Fragment轻松监听返回键/Fragment中的popupwindow响应返回键隐藏
- 优雅的让Fragment监听返回键
- 优雅的让Fragment监听返回键
- 解决Activity中或fragment时,点击手机返回键无效,无法触发onKeyDown
- 萌新首水,图像处理硬件的选型
- 从物理到软件工程,中山大学转专业2017纪实
- Netty源码分析:ServerBootstrap
- 【实战】2-12vsftpd安装配置
- 嵌入式Linux基础教程-读书笔记
- Fragment监听返回键(Fragment响应Activity的onKeyDown事件)Kotlin版
- Vue之属性
- 2.串口通讯点亮LED灯
- mysql事务,select for update,及数据的一致性处理
- 共享内存
- redis入门-hash扩展命令
- Spring+SpringMVC+Mybatis+Shiro框架整合-yellowcong
- 日志(一)从Maven依赖文件说起
- 二进制中1的个数