android WebView 浏览历史管理前进和后退

简介:


通过设置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:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/LinearLayout01"
	android:layout_width="fill_parent" android:layout_height="fill_parent"
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical">
	<LinearLayout android:id="@+id/LinearLayout02"
		android:layout_height="wrap_content" android:layout_width="fill_parent">
		<Button android:id="@+id/Button01" android:layout_width="wrap_content"
			android:layout_height="wrap_content" android:text="<<" />
		<Button android:id="@+id/Button02" android:layout_width="wrap_content"
			android:layout_height="wrap_content" android:text="<" />

		<Button android:id="@+id/Button03" android:layout_width="wrap_content"
			android:layout_height="wrap_content" android:text=">"></Button>
		<Button android:id="@+id/Button04" android:layout_width="wrap_content"
			android:layout_height="wrap_content" android:text=">>"></Button>
		<Button android:id="@+id/Button05" android:layout_width="wrap_content"
			android:layout_height="wrap_content" android:text="Clear History"></Button>
	</LinearLayout>
	<EditText android:id="@+id/EditText01" android:layout_height="wrap_content"
		android:text="http://" android:layout_width="fill_parent"
		android:maxLines="1" />
	<WebView android:id="@+id/WebView01" android:layout_width="wrap_content"
		android:layout_height="wrap_content" />
</LinearLayout>


相关文章
|
4月前
|
数据采集 小程序 数据可视化
智慧校园电子班牌管理系统源码 Java Android原生
家长通过家长小程序端随时了解孩子在校的情况,实时接收学生的出勤情况,学生到校、离校时间。随时了解学生在校的表现、学生成绩排名,及时与教师沟通,关注孩子的健康成长。
32 0
智慧校园电子班牌管理系统源码 Java Android原生
|
6月前
|
Java 关系型数据库 MySQL
0002Java安卓程序设计-基于Uniapp+springboot菜谱美食饮食健康管理App2
0002Java安卓程序设计-基于Uniapp+springboot菜谱美食饮食健康管理App
36 0
|
4天前
|
API Apache Android开发
对于Android的http请求的容错管理
对于Android的http请求的容错管理
|
6天前
|
Java Android开发
Android OTG U盘无法显示在系统文件管理的修改
Android OTG U盘无法显示在系统文件管理的修改
6 0
|
21天前
|
存储 开发工具 Android开发
Android系统 权限组管理和兼容性
Android系统 权限组管理和兼容性
22 0
|
28天前
|
数据采集 小程序 数据可视化
Java Android原生智慧校园管理系统源码
对班牌的考试模式、班牌模式上课模式进行设置及管理,设置成功后,班牌端将同步应用。
27 0
|
2月前
|
Shell 开发工具 Android开发
ADB 下载、安装及使用教程:让你更好地管理 Android 设备
ADB 下载、安装及使用教程:让你更好地管理 Android 设备
589 2
|
3月前
|
小程序 Java 数据挖掘
Java校园智慧管理云平台源码 小程序+android电子班牌系统
智慧校园技术架构 ❀后端:Java ❀框架:springboot ❀前端页面:vue +element-ui ❀小程序:小程序原生开发 ❀电子班牌:Java Android
38 0
|
3月前
|
XML Android开发 数据格式
安卓和webview交互
安卓和webview交互
26 0
|
5月前
|
JavaScript 前端开发 Android开发
android开发,使用kotlin学习WebView(详细)
android开发,使用kotlin学习WebView(详细)
186 0