1、当打开WebView所显示网页上的超链接时,会调用系统的浏览器打开,而不是在原先的WebView上显示。
2、当我按下返回键时,并不是返回的上次打开的网页,而是直接退出程序。下面说明如果解决上面的两个问题
在原WebView上显示打开的链接需要自定义一个类,继承自WebViewClient,并设置WebView的WebViewClient即可:
代码如下 | 复制代码 |
class MyWebViewClient extends WebViewClient { public boolean shouldOverrideUrlLoading(WebView view, String url) { //重写此方法表明点击链接是在当前的webview里跳转,不跳到浏览器那边 view.loadUrl(url); return true; } } webview = (WebView)this.findViewById(R.id.webView); MyWebViewClient mwvc = new MyWebViewClient(); webview.setWebViewClient(mwvc); webview.loadUrl("/index.php"); |
这样,当点击网页里的超链接时,就会在当前的WebView中显示,而不是打开浏览器去显示该网页。
响应返回键退回上一个网页第一个问题解决了之后,又引发一个新的问题,那就是当点击了好几层链接后,按下返回按钮并不是按预想的那样回退到上一个网页,而是直接退出了程序。
解决这个问题就需要重写onKeyDown方法,当按下返回键时,判断当前打开的网页是不是顶级页面,如果是,则退出Activity,如果不是,则退回上一个页面:
代码如下 | 复制代码 |
String topPage = "/index.php"; public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { String currentUrl = webview.getUrl(); if(currentUrl.equals(topPage)) { this.finish(); } else { webview.goBack(); } return true; } return false; } |
时间: 2024-10-27 07:22:58