昨天在项目里面A界面点击不同的按钮跳到一个B界面webViewPageActivity,用Intent传入不同的title和url,B界面中有一个大的webView,加载不同的url,但是点击后退键的时候,有一个url总是觉得自己可以后退,canGoBack()总是得到true,导致点击手机的后退键webView总是在刷新,通过打断点的方法得到这个错误原因后,我就想如果能再加一个判断,判断是否当前界面是否和Intent传进来的url是否相同,如果相同,取一下反,就可以直接走closeActivity()方法,其他的url不会受到影响.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//先拼出intent传进来的url的完整url
String webViewUrl = webUrl + "/html/index.html";
//打印 按下后退键时,webview的url是什么
Log.i("webViewUrl:", webView.getUrl());
//多加一个判断 如果当前url和intent传进来的url是相等的 取反->走closeActivity()
if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack() && !webViewUrl.equals(webView
.getUrl())) {
webView.goBack();
return true;
} else {
closeActivity();
}
return super.onKeyDown(keyCode, event);
}
private void closeActivity() {
if (webView != null) {
final ViewGroup viewGroup = (ViewGroup) webView.getParent();
if (viewGroup != null) {
viewGroup.removeView(webView);
}
webView.destroy();
}
finish();
}