Android開發之WebView的使用進階

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.