攔截onKeyDown使BACK按鍵運行WebViewClient之goBack,而非結束Activity

本文是Google Android應用程式範例實務課程-Day4課堂作業,說明如下。


前文透過WebViewClient瀏覽網頁,而非Android內建的瀏覽器,且載入網頁時可出現自訂的提示訊息。
本文將繼續擴大相同專案,讓Android基本按鍵BACK能予使用者「回到前一頁(網頁)」,而非結束瀏覽網頁的Activiy。


[範例情境]
1.透過Android的WebViewClient包裝網頁
2.點選BACK按鍵可以回到上一個瀏覽過的網頁

[情境分析]
1.1個Activity
2.1個Layout
3.捕捉onKeyDown以覆寫BACK按鍵原始行為


SETP 1:捕捉onKeyDown事件
Source→Override / Implement Method...→onKeyDown


SETP 2:撰寫onKeyDown程式碼
@Override public boolean onKeyDown(int keyCode, KeyEvent event) {      if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {      if (mWebView01.canGoBack())      {      mWebView01.goBack();      }      else      {      ProgressDialog d2=new ProgressDialog(Homework6.this);      d2.setTitle("ProgressDialog");         d2.setMessage("沒有上一頁");         d2.show();      }      event.startTracking();      }      return false; }
本步驟針對BACK覆寫可參考2篇文章:
1.Android官方說明
2.Android與J2ME之區別


SETP 3:執行
請實際瀏覽多個連結並測試BACK是否真的都符合history回到前一網頁。
另外,piggy還很38的模仿前文多作了個ProgressDialog,當使用者對沒有上一頁的第一個網頁按下BACK時,可以出現提示資訊讓主頁面失焦,可同時避免結束Activity。

沒有留言: