WebView 返回键 onReceivedTitle 不触发 问题解决
2016-03-22 12:22
459 查看
现在用到webview的地方 都希望加载标题,但如果是多级页面,在返回的时候,有些版本的机器 特别是4.4 之前 并不会触发 onReceivedTitle ,网上有一堆方法,不过感觉都兼容性不好,
首页应该也是用一个hashmap存 url 和标题
private Map<String, String> titleMap = new HashMap<>();
其次在 WebChromeClient 中 覆写 onReceivedTitle 方法 ,注意的是过滤一下锚点,否则以后会很容易同没锚点的混淆
Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
tv_title_bar_title.setText(title);
String currentUrl = view.getUrl();
String cleanUrl = currentUrl.replaceAll("\\#(.*)?", "");
titleMap.put(cleanUrl, titleStr);
}
接下来才是关键 ,最好是在 WebViewClient 里面 覆写 onPageStarted 方法,而不是在其他方法里,这样可以获得最大的兼容性,这里对url的处理也应该去掉锚点
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
String cleanUrl = url.replaceAll("\\#(.*)?", "");
String str = titleMap.get(cleanUrl);
if(StringUtils.isNotBlank(str)) {
tv_title_bar_title.setText(str);
}
}
首页应该也是用一个hashmap存 url 和标题
private Map<String, String> titleMap = new HashMap<>();
其次在 WebChromeClient 中 覆写 onReceivedTitle 方法 ,注意的是过滤一下锚点,否则以后会很容易同没锚点的混淆
Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
tv_title_bar_title.setText(title);
String currentUrl = view.getUrl();
String cleanUrl = currentUrl.replaceAll("\\#(.*)?", "");
titleMap.put(cleanUrl, titleStr);
}
接下来才是关键 ,最好是在 WebViewClient 里面 覆写 onPageStarted 方法,而不是在其他方法里,这样可以获得最大的兼容性,这里对url的处理也应该去掉锚点
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
String cleanUrl = url.replaceAll("\\#(.*)?", "");
String str = titleMap.get(cleanUrl);
if(StringUtils.isNotBlank(str)) {
tv_title_bar_title.setText(str);
}
}
相关文章推荐
- Android之CookieStore的持久化
- Swift函数和闭包
- WIn32中CInternetSession运行异常(afxCurrentAppName 为空)
- Android的multidex使用及优化
- Android新手入门2016(11)--非阻塞对话框AlertDialog
- iOS-AutoresizesSubviews 属性详解
- iOS 百度推送
- APP界面设计之页面布局的22条基本原则
- 前端php加后端golang微信发红包
- 图解Fiddler如何抓手机APP数据包
- Android开发案例 – 在AbsListView中使用倒计时
- Android 获取字符串高度与宽度
- iOS开发--ChildViewController实现订单页的切换
- C开发、Android专业人员
- iOS实现文字转化成彩色文字图片
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- iOS隐藏某一界面自定义的返回按钮
- web Kohana_Exception [ 0 ]: Directory APPPATH/cache must be writable
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- webview加载网页与全屏播放视频?