android WebView 瀏覽歷史管理前進和後退
阿新 • • 發佈:2018-12-31
通過設定WebViewClient,可以設定在網頁開始下載和下載完畢後要做的操作。如在下載時進度條和下載時標題顯示文字可以在這設定,下載後設置title為網頁標題也要在這設定。開戶前進後退等功能也要在這設定。
下面的程式中前進後退等按鈕的可用屬性是和WebVeiw可否前進後退是同步的。同時Activity兼具事件監聽器的功能。
package com.iteedu.webview; import android.app.Activity; import android.graphics.Bitmap; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnKeyListener; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.EditText; public class WebViewExample extends Activity implements OnClickListener, OnKeyListener { //設定WebViewClient的處理程式 class MyWebViewClient extends WebViewClient { @Override public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) { back.setEnabled(webView.canGoBack()); forward.setEnabled(webView.canGoForward()); } @Override public void onPageFinished(WebView view, String url) { //設定程式的標題為網頁的標題 if (webView.getTitle() != null) { WebViewExample.this.setTitle(webView.getTitle()); } } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { WebViewExample.this.setTitle("Loading..."); back.setEnabled(webView.canGoBack()); forward.setEnabled(webView.canGoForward()); } } Button back; Button forward; Button first; Button last; Button clear; EditText url; WebView webView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.example03); //建立顯示畫面上Button,EditText,WebView類的例項變數 first = (Button)findViewById(R.id.Button01); back = (Button)findViewById(R.id.Button02); forward = (Button)findViewById(R.id.Button03); last = (Button)findViewById(R.id.Button04); clear = (Button)findViewById(R.id.Button05); url = (EditText)findViewById(R.id.EditText01); webView = (WebView)findViewById(R.id.WebView01); webView.setWebViewClient(new MyWebViewClient()); //設定Button和EditText的監聽功能 back.setOnClickListener(this); forward.setOnClickListener(this); first.setOnClickListener(this); last.setOnClickListener(this); clear.setOnClickListener(this); url.setOnKeyListener(this); } //按下Button時的處理程式 public void onClick(View v) { if (v == back) { if (webView.canGoBack()){ webView.goBack(); } } else if (v == forward) { if (webView.canGoForward()){ webView.goForward(); } } else if (v == first) { if (webView.canGoBackOrForward(-2)){ webView.goBackOrForward(-2); } } else if (v == last) { if (webView.canGoBackOrForward(+2)){ webView.goBackOrForward(+2); } } else if (v == clear) { webView.clearHistory(); } } //於url(EditText)編輯框按下ENTER時的處理程式,下載新的網頁 public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_ENTER) { webView.loadUrl(url.getText().toString()); return true; } return false; } }
xml: