Android-完美解决在Activity中触摸返回键onBackPressed不能触发问题
来源:互联网 发布:svg js设置 transform 编辑:程序博客网 时间:2024/06/06 10:46
场景:在一个只有WebView组件的Activity中如何正确处理页面的返回?
之前思路是覆写Activity的onBackPressed方法,因为用户触摸“返回键“会触发该方法;后来发现在三星,OPPO等机型手机上该方法并不执行,也就说该方法并不可取。
解决方法:通过覆写dispatchKeyEvent方法,从该方法中拦截返回键,再做处理,这种方法测试后感觉兼容性不错。
代码如下:
public class WebViewDemoActivity extends Activity { private WebView mWebview; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); mWebview = (WebView)findViewById(R.id.layout_webview); //init webview param } @Override public boolean dispatchKeyEvent(KeyEvent event) { //拦截返回键 if (event.getKeyCode() == KeyEvent.KEYCODE_BACK){ //判断触摸UP事件才会进行返回事件处理 if (event.getAction() == KeyEvent.ACTION_UP) { onBackPressed(); } //只要是返回事件,直接返回true,表示消费掉 return true; } return super.dispatchKeyEvent(event); } @Override public void onBackPressed() { if (mWebview != null) { //如果h5页面可能返回,跳转到上个页面 if (mWebview.canGoBack()) { mWebview.goBack(); } else { //不能返回上个页面,直接finish当前Activity finish(); } } else { finish(); } }}
阅读全文
0 0
- Android-完美解决在Activity中触摸返回键onBackPressed不能触发问题
- Android开发 返回键的复写 onBackPressed()
- Android开发 返回键的复写 onBackPressed()
- Android开发 返回键的复写 onBackPressed()
- Android 不能返回 parent Activity 的问题
- 解决Activity中或fragment时,点击手机返回键无效,无法触发onKeyDown
- Android中launcherMode="singleTask"详解<解决home键返回不能出现原界面问题>
- 解决在使用tab时里面嵌套activity,不能正确监听返回键异常
- Android软键盘删除键触发Activity的返回事件
- Android软键盘删除键触发Activity的返回事件
- 关于Fragment中返回键(onBackPressed)的处理
- 【完美解决系列】解决在Android中使用background时导致图片被拉伸的问题
- fragment监听onBackPressed返回键
- fragment监听onBackPressed返回键
- Android在web view下点击返回键直接退出程序完美解决
- 完美解决Android中AVD模拟器启动慢(卡在Android启动界面)等问题
- 解决Android中Fragment调用startactivityforresult不能返回结果的问题
- 【完美解决系列】Android在自定义Dialog中TextView内容显示不全的问题
- C# FTP下载文件夹到本地
- scrollView嵌套webview+listview listview显示不全 上拉listview加载更多
- Xcode 6视图调试
- getCurrentDate
- Android中通过Intent传递对象、集合问题
- Android-完美解决在Activity中触摸返回键onBackPressed不能触发问题
- GCD使用经验与技巧浅谈
- IFeatureLayerDefinition接口查询要素图层方法汇总
- 802.11协议下,分组从发送到接收的全过程(信道到物理层到MAC层传输过程)
- iOS a/framewortk/bundle 教程
- Ubuntu 16.04 + GTX1080ti + CUDA8.0 + cudnn5.1 + tensorflow
- IDC脚本语言概述
- IOS-使用framework实现功能模块动态更新
- C++中基础的知识要点