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
WebViewClient的常见用途有三个:1、让WebView自己加载子页面;2、如果WebView加载失败显示失败页面;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;
}