您的位置:首页 > 移动开发

关于WebView.goBack()在有的网页无法返回的问题的解决方法

2016-11-25 05:17 961 查看
今天研究WebView时,发现有的网页点击返回按钮,执行WebView.goBack();页面会重新加载而不是返回上一页,我写的点击按钮返回的方法如下

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}


经过网上搜索资料发现出现这个问题是因为某些页面进行了重定向处理,即从a页面点击超链接后先跳转到b页面,b页面进行重定向后跳转到c页面,然后我们执行

webView.goBack();时会先返回到b页面,b页面又重定向到c页面,从而造成点击返回,却重新加载c页面的现象。解决这个问题最简单的方法就是在shouldOverrideUrlLoading方法里面返回false,让WebView自身去处理,就可以避免这种问题的发生。

webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//此处进行逻辑处理
return false;
}

});

是不是很简单!

补充一点,如果返回true就表示自己已经处理,不需WebView自身再去处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐