项目中需要webview重定向,但是由于一个webveiw里面有许多加载操作,因此在调用webview。goback()方法时,往往达不到我们需要的操作效果。

1.解决方法

WebBackForwardList webBackForwardList=webview.copyBackForwardList()获取webview加载栈,然后更具加载栈做逻辑操作

2.webBackForwardList常用的方法

  • int size = webBackForwardList.getSize()
  • webBackForwardList.getCurrentItem()
  • webBackForwardList.getCurrentIndex()
  • webBackForwardList.getItemAtIndex(index)

getsize()方法获取当前加载栈的长度;
getCurrentItem()获取当前webview所加载的界面,我们可以在这个方法下获得url,title等内容;
getCurrentIndex()获取当前加载在加载栈中的位置;
webBackForwardList.getItemAtIndex(index)获取加载栈中第index页面;

3.合理使用

在2中我们获取到加载页面的一些信息,然后可以根据当前url,标题,位置。来进行相应的处理。

4.Demo使用

现在我们有这样一个场景:打开一个activity,webview加载A界面,然后用户在A里面点击B,然后点击C,点击D。返回操作时我们需要从D跳到B,然后跳A.下面为代码:

  public boolean onKeyDown(int keyCode, KeyEvent event) {        if (webView.canGoBack()) {            WebBackForwardList webBackForwardList = webView.copyBackForwardList();            if (webBackForwardList.getCurrentIndex() == 4) {//当前处于D界面                webView.loadUrl(webBackForwardList.getItemAtIndex(1).getUrl());//挑转到B界面                return true;            }            webView.goBack();        }        return true;    }

更多相关文章

  1. DexClassLoader 实现 Android(安卓)插件加载
  2. TextView获取父控件的绘图状态
  3. Android(安卓)NDK&JNI开发之Native崩溃日志分析方法
  4. Android(安卓)获取局域网内网IP地址
  5. Android(安卓)UI- 对话框 (AlertDialog & ProgressDialog)
  6. Android(安卓)Studio报Element XXXX must be declared的解决方法
  7. android webrtc 视频流源码获取帧图像VideoFrame转bitmap 作为图
  8. 使用android画布的save()和restore()方法
  9. Android运行Socket项目 Error: ShouldNotReachHere()

随机推荐

  1. 百度地图申请密钥Android(安卓)SDK
  2. Android菜鸟的成长笔记(7)——什么是Activi
  3. Android蓝牙开发
  4. 理解Android安全机制
  5. android 3.0中加快启动模拟器
  6. Android(安卓)中自定义控件和属性(attr.x
  7. Android中使用webview和web页面的一些交
  8. Android(安卓)Studio中获取sha1证书的方
  9. Android应用程序中的四大组件
  10. LinearLayout