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