- 部分机型(比如 华为 SCL-AL00, Android 5.1.1)上在调用
WebView.goBack()
之后WebChromeClient.onReceivedTitle()
方法不会被调用, 因此会造成title显示不正确的情况.
//解决方法是: 在goBack之后, 获取访问历史, 从中取出历史记录中的title来显示@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK) { if(webView.canGoBack()) { webView.goBack(); //注意: goBack(), goForward(), goBackOrForward() 方法调用不会影响返回的 WebBackForwardList, 改变的仅仅是 currentIndex 游标 WebBackForwardList list = webView.copyBackForwardList(); if(BuildConfig.DEBUG) { dumpWebBackForwardList(list); } WebHistoryItem item = list.getCurrentItem(); if(item != null) { mNavigationBar.setTitle(formatTitle(item.getTitle())); } return true; } } return super.onKeyDown(keyCode, event);}
注意:
- goBack(), goForward(), goBackOrForward() 方法调用不会影响返回的 WebBackForwardList, 改变的仅仅是 currentIndex 游标
- goForward()方法在某些ROM上也会有类似的问题, 可以用上述的方式一并解决