android WebView(3)WebViewClient


WebViewが自分でサブページをロードするデフォルトで、WebViewがロードしたページのハイパーリンクボタンをクリックすると、システムが持っているブラウザを起動して新しいページをロードします.WebViewを自分でロードするには、次のコードを追加する必要があります.
webView.setWebViewClient(new SelfWebViewClient());

SelfWebViewClientは、次のようにWebViewClientから継承されます.
public class SelfWebViewClient extends WebViewClient {
		@Override
		public void onPageFinished(WebView view, String url) {
			super.onPageFinished(view, url);
			//    
		}


		@Override
		public void onReceivedError(WebView view, int errorCode,
				String description, String failingUrl) {
			super.onReceivedError(view, errorCode, description, failingUrl);
			//           
			loadFailure.setVisibility(View.VISIBLE);
		}


		@Override
		public void onLoadResource(WebView view, String url) {
			super.onLoadResource(view, url);
			//    
		}


		@Override
		public void onReceivedHttpAuthRequest(WebView view,
				HttpAuthHandler handler, String host, String realm) {
			super.onReceivedHttpAuthRequest(view, handler, host, realm);
			//webview    
		}


		@Override
		public void onPageStarted(WebView view, String url, Bitmap favicon) {
			super.onPageStarted(view, url, favicon);
			//      
		}


		@Override
		public boolean shouldOverrideUrlLoading(WebView view, String url) {
			//      ,            。 
			view.loadUrl(url);
			return true
		}
	}

WebViewClientの一般的なライフサイクルは次のとおりです.
ロードに成功した場合
onPageStarted-->> onLoadResource-->>onPageFinished-->> onLoadResource
ロードに失敗した場合
onPageStarted-->>
onLoadResource-->>onReceivedError-->>onPageFinished-->>onPageFinished
WebView Clientの一般的な用途は3つあります.1、WebViewにサブページを自分でロードさせる.2、WebViewのロードに失敗した場合、失敗したページを表示する.3、ページのログインパスワードを覚えます.この3つの機能は上のコードで簡単に紹介されています.
WebViewはサブページから戻る上で、サブページを直接WebViewでロードする方法について説明しましたが、サブページから前のページに戻る方法について説明しました.これは出発時間が必要で、私は戻りキーでトリガーします.コードは以下の通りです.
  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) { 
      if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) { 
          webView.goBack(); //goBack()    WebView      
          return true; 
      } else{
    	  finish();
      }
      return false; 
  }