Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1071573
  • 博文数量: 77
  • 博客积分: 821
  • 博客等级: 军士长
  • 技术积分: 1905
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-23 16:17
个人简介

学校:上海交通大学软件工程 学历:硕士 行业:从事流媒体移动开发 QQ: 412595942 邮箱:yiikai1987910@gmail.com

文章分类

全部博文(77)

文章存档

2016年(4)

2015年(15)

2014年(16)

2013年(12)

2012年(21)

2011年(9)

分类: Android平台

2015-05-05 18:26:18

项目中需要用webView加载第三方的web页面,其中有个页面有重定向到另外一个页面,造成了页面无法后退,后退到上个页面,又重定向到之前界面,重定向源页面也被加入到浏览记录中,刚开始想查找api中找个编辑历史记录的方法,把找重定向源页面从历史记录中删除,半天找不到,只有clearHistory方法。

后用浏览器访问该网站,则后退正常,会退到重定向页面。用微信内置WebView ,QQ内置WebView打开该页面后退也正常,发现重定向源页面也被加入到浏览记录中。

 

纠结这个问题困扰了两三天,各大网站找解决方案也找不到一个完美的方法,大部分都是新建集合另外记录下浏览记录,后退时加载集合里的记录的页面。而不使用Webview.goBack(),在stackOverflow上找也大都是这些。感觉这些方法不完美,没有从根本上解决问题。总感觉还有更好的方法,一个偶然情况下发现了解决方案。


在使用WebView的时候,我们一般都会设置WebViewClient ,重写shouldOverrideUrlLoading方法,让webView加载点击url,并return true。因为不这样设置,点击页面上的链接弹出浏览器


[java] view plaincopy
  1. webView.setWebViewClient(new WebViewClient() {  
  2.   
  3.     @Override  
  4.     public boolean shouldOverrideUrlLoading(WebView view, String url) {  
  5.          view.loadUrl(url);  
  6.         return true;  
  7.     }  
  8.   
  9. });  



而造成重定向源页面被加入历史记录貌似恰恰是这个设置。而让人想不到的解决方案竟是下面这段代码



[java] view plaincopy
  1. webView.setWebViewClient(new WebViewClient() {  
  2.   
  3.         @Override  
  4.         public boolean shouldOverrideUrlLoading(WebView view, String url) {  
  5.                
  6.             return false;  
  7.         }  
  8.   
  9.     });  

之前我以为这样设置跟没设置WebViewClient效果一样,也会点连接弹浏览器。没想到竟是完全不一样的,这样设置点连接会在当前webView打开,而且重定向页面后退也没问题
阅读(13824) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~