安卓的WebView一般是嵌套在activity或者fragment中的,但是如果在这种activity页面上点击返回按钮,一般会finish掉当前activity.其实是应该关闭当前的WebView的界面,回到前一个连接的地址.一般我们使用一下的方法来实现.
if(webView.canGoback()){//在这里如果无法再往回后退的话,那么就会返回false,那么就可以执行自己的逻辑代码了.
webView.goBack();
}
接下来是Webview界面的一些常用的配置:
mainWebView.getSettings().setJavaScriptEnabled(true);
mainWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
mainWebView.getSettings().setAppCacheEnabled(false);
mainWebView.getSettings().setSupportZoom(true);
mainWebView.getSettings().setSaveFormData(false);
mainWebView.getSettings().setDomStorageEnabled(true);
mainWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mainWebView.getSettings().setUseWideViewPort(false);
mainWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.contains("billPaySuccess.jsp")){
Intent intent = new Intent();
intent.setClass(getApplicationContext(), OrderPaySucActivity.class);
intent.putExtra("orderPayBean", orderPayBean);
startActivity(intent);
finish();
}else
mainWebView.loadUrl(url);
return true;
}
});
mainWebView.loadUrl(webUrlsl);
下面是对返回按钮的监听事件:
public boolean onKeyDown(int keyCode, KeyEvent keyEvent){
if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK) {
if (goBackView != null) {
goBackView.performClick();
} else
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
当按下返回键时,如果当前页面存在返回按钮那么相当于点击了返回按钮,如果没有返回按钮的话则finish掉当前页面.这样只在返回按钮的监听器中完成逻辑就可以了.
补充:
1.在网上看到网友有介绍下面这个东西的,没测试过怎么样
关于webview的加载栈,后来发现webview本身也有对应的API
//获取历史
WebBackForwardList mWebBackForwardList = webView.copyBackForwardList();
2.该网友的另外一篇关于webview的使用的文章写得不错,可以看看哦
http://blog.csdn.net/t12x3456/article/details/13769731