Android WebView重定向处理问题

使用WebView加载网页,当加载跳转了很多个页面时,想要回到最前面某一个页面的时,如果使用goBack()方法一步一步的返回,是一件很痛苦的事情。其实WebView提供了历史栈对象(WebBackForwardList)

下面是WebBackForwardList常用方法:

         //获取历史栈实例列表
        WebBackForwardList webBackForwardList = mWebView.copyBackForwardList();
        //获取历史栈的实际个数
        int size = webBackForwardList.getSize();
        //获取当前页面所处历史栈的位置
        int currentIndex = webBackForwardList.getCurrentIndex();
        //获取当前页面的历史记录实例,可以通过WebHistoryItem得到url、标题等等
        WebHistoryItem currentItem = webBackForwardList.getCurrentItem();
        //获取指定位置的历史记录
        WebHistoryItem itemAtIndex = webBackForwardList.getItemAtIndex(2);

简单例子:


主要代码:

  mButGoto.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                String content = mEtContent.getText().toString();
                int index = Integer.parseInt(content);
                //获取历史栈的列表
                WebBackForwardList webBackForwardList = mWebView.copyBackForwardList();
                //得到历史栈的个数
                int size = webBackForwardList.getSize();
                //得到当前页面的位置
                int currentIndex = webBackForwardList.getCurrentIndex();

                if (index >= 0 && index < size) {
                    if (index == currentIndex) {
                        //判断是否当前页面
                        Toast.makeText(getApplicationContext(), "正在当前页面", Toast.LENGTH_SHORT).show();
                        return;
                    }
                    //获取指定位置的历史实例 ,跳转指定历史栈的位置
                    WebHistoryItem itemAtIndex = webBackForwardList.getItemAtIndex(index);
                    String url = itemAtIndex.getUrl();
                    mWebView.loadUrl(url);
                } else {
                    Toast.makeText(getApplicationContext(), "页面不存在", Toast.LENGTH_SHORT).show();
                }
            }
        });

猜你喜欢

转载自blog.csdn.net/hzw2017/article/details/80535035