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

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);

                }

            }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: