使用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(); } } });