Android webView中监听物理返回键一层一层退出
前言
fragment中加载webview如果不处理返回键
那么当你打开多个H5页面的时候 会一次性回退到根级
有时候我们需要一个缓冲 就是一级一级退出 给人一个良好的体验
该怎么做呢?
废话不多说 直接上代码
定义接口
定义一个接口 传入view
/*** Author :Lyudony.* Created :2021/2/10* Description :定义接口 传入view* */
public interface BackHandledInterface {void setSelectedFragment(BackHandledFragment selectedFragment);}
写一个基类Fragment
public abstract class BackHandledFragment extends BaseFragment {private BackHandledInterface mBackHandledInterface;/*** 所有继承BackHandledFragment的子类都将在这个方法中实现物理Back键按下后的逻辑* FragmentActivity捕捉到物理返回键点击事件后会首先询问Fragment是否消费该事件* 如果没有Fragment消息时FragmentActivity自己才会消费该事件*/public abstract boolean onBackPressed();@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (!(getActivity() instanceof BackHandledInterface)) {throw new ClassCastException("Hosting Activity must implement BackHandledInterface");} else {this.mBackHandledInterface = (BackHandledInterface) getActivity();}}@Overridepublic void onStart() {super.onStart();//告诉FragmentActivity,当前Fragment在栈顶mBackHandledInterface.setSelectedFragment(this);}
}
MainActivity中处理 物理返回键
别忘了 让MainActivityimplements BackHandledInterface
接口
//处理Fragment中的返回键private BackHandledFragment mBackHandedFragment;@Overridepublic void setSelectedFragment(BackHandledFragment selectedFragment) {this.mBackHandedFragment = selectedFragment;}@Overridepublic void onBackPressed() {if (mBackHandedFragment == null || !mBackHandedFragment.onBackPressed()) {if (getSupportFragmentManager().getBackStackEntryCount() == 0) {if ((System.currentTimeMillis() - lastTime) > 2000) {lastTime = System.currentTimeMillis();ToastUtils.showShort(this, "再点击一次退出程序", Gravity.CENTER);} else {super.onBackPressed();}} else {getSupportFragmentManager().popBackStack(); //fragment 出栈}}}
别忘了 让MainActivityimplements BackHandledInterface
接口
最后 方法
在你使用的fragment中继承基类BackHandledFragment
然后重写父类抽象方法 onBackPressed()
判断
@Overridepublic boolean onBackPressed() {//如果webview有上一层 就返回上一层if (mWebView.canGoBack()) {mWebView.goBack();return true;} else {//交给父类return false;}}
如此 便解决了Fragment中加载webview对物理返回键的监听
总结
现在是 2021 02 10 凌晨 2:29 明天就是除夕了
一个人在异乡 真的好孤单 : (
为了理想 努力吧!
Android webView中监听物理返回键一层一层退出相关推荐
- android 监听物理返回键,Android应用开发之react-native 监听Android物理返回键
本文将带你了解Android应用开发之react-native 监听Android物理返回键,希望本文对大家学Android有所帮助. 1. componentWillMount(){ ...
- cordova app 监听物理返回键
物理返回键指的是手机系统自带的返回按钮,通过cordova监听返回按钮操作,可以禁止某些页面的返回操作,以及实现点击两次返回按钮退出应用. var pageUrl = window.location. ...
- vue监听物理返回键事件
在一些项目支付页中,有些用户因价格不太满意等导致成交失败,点击返回键退出页面,这个时候可以通过监听用户返回动作来触发某些事件,比如弹出红包优惠等等. // 判断设备是否支持 mounted() {if ...
- uni-app在安卓手机监听物理返回键
//在项目的首页进行监听onLoad(){ //写在onLoad钩子里使得进入后直接被调用var webview = plus.webview.currentWebview();//调用H5+API获 ...
- Android监听手机返回键
Android在做项目时,有时候点击返回按钮没反应(有冲突),那就需要我们监听返回键.重写onKeyDown()方法: // 监听手机返回键 @Override public boolean onKe ...
- iOS小技能:监听H5页面goBack返回事件 网页监听APP返回键 (NavigationBackItemInjection)
文章目录 引言 I . iOS监听H5页面goBack返回事件 1.1 UIWebView 监听H5页面goBack返回事件 1.2 WKWebView监听H5页面goBack返回事件 II. 网页监 ...
- 微信公众号监听手机返回键事件jssdk—wx.closeWindow
需求场景: 只有扫码初始进入异业联盟活动页,0元券直接弹框领取成功(如图1) 抛出问题: 进入优惠券包后到另一个页面(如图1) 然后按手机返回会回到异业联盟活动页,始终弹出领取活动页面 解决方案: 在 ...
- JS 监听手机返回键
JS监听手机返回键,需要用些前端的"奇技淫巧". 核心代码如下: if (window.history && window.history.pushState) { ...
- 原生js监听手机返回键
创建人:hu_time 描述:js监听手机返回键 普通页面跳转,监听返回上一页: document.addEventListener("plusready", function() ...
最新文章
- ProtoBuf格式详解
- 比特币现金开发者:BCH网络将“提升到VISA级别”来处理交易
- RAM测试方法 C语言实现,有哪些常用单片机系统RAM测试方法?基于种子和逐位倒转的RAM故障测试法有什么优点?...
- 基于迭代次数的多中心定位分类法
- qpython3使用手册图_qpython图形
- ASP.NET MVC 3: Razor视图引擎中 @: 和text 语法【转载】
- Active Directory系列之十七:实战详解域信任关系
- Tkinter图片按钮
- Java反射在Main方法的中的而应用
- 8 | Spatial-based GNN/convolution模型之GAT(受欢迎)
- Unity 血条跟随效果
- JSTL fmt 标签 使用
- java计算机毕业设计网络课程答疑系统MyBatis+系统+LW文档+源码+调试部署
- node.js实现网络爬虫获取区划代码和城乡划分代码
- 转录组测序(质控、比对、计数)
- Composition API的优势
- 2022年餐饮连锁行业研究报告
- 自动变量,非自动变量,全局变量与局部变量
- 王岚老师计算机,平凡中演绎精彩——优秀教师王岚
- 大学本科毕业生如何免费进行论文查重
热门文章
- SQL Server索引
- java面试(二)--(1)EJB的几种类型(2)Hibernate的悲观锁和乐观锁(3) 二叉搜索树与双向链表
- 基于单片机的防酒驾/酒精检测系统设计(#0425)
- iOS 推送通知授权请求优化
- 数据结构与算法_04_回头是岸依好汉(回溯算法)
- Ubuntu Server下给树莓派安装摄像头
- 售前管理——怎样写解决方案
- tokuDB 使用详解及其注意事项(2)
- 华为Atlas人工智能计算平台概述
- 如何配置magento免运费商品方法