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