Android之WebView在Fragment中实现返回上一个网页
2017-01-04 14:05
429 查看
WebView在Activity中可以通过以下方法实现返回上一个网页:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
} 在Fragment中却不能直接用此方法来解决了,解决方法如下
public class FindFragment extends Fragment {
private WebView webview_baidu;
private SwipeRefreshLayout swipe_container;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message message) {
switch (message.what) {
case 1: {
webViewGoBack();
}
break;
}
}
};
private void webViewGoBack() {
webview_baidu.goBack();
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.findfragment, null);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
webview_baidu= (WebView) getActivity().findViewById(R.id.webview_baidu);
swipe_container= (SwipeRefreshLayout) getActivity().findViewById(R.id.swipe_container);
swipe_container.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
webview_baidu.loadUrl(webview_baidu.getUrl());
}
});
webview_baidu.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
super.onReceivedSslError(view, handler, error);
handler.proceed();// 接受所有网站的证书
}
});
//取消滚动条
webview_baidu.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
//触摸焦点起作用
webview_baidu.requestFocus();
//设置进度条
webview_baidu.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
//隐藏进度条
swipe_container.setRefreshing(false);
} else {
if (!swipe_container.isRefreshing())
swipe_container.setRefreshing(true);
}
super.onProgressChanged(view, newProgress);
}
});
webview_baidu.getSettings().setJavaScriptEnabled(true);
webview_baidu.getSettings().setSupportZoom(true);//支持对网页缩放
webview_baidu.getSettings().setBuiltInZoomControls(true);//支持android4.0
webview_baidu.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
webview_baidu.getSettings().setDefaultFontSize(18);
//默认缩放模式
webview_baidu.getSettings().setDefaultZoom(WebSettings.ZoomDensity.CLOSE);
// webview_baidu.loadUrl("http://www.cdqldz.com/");
webview_baidu.loadUrl("https://shop149047097.m.taobao.com");
//处理点击返回 进入上一次的网页的事件处理
webview_baidu.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webview_baidu.canGoBack()) {
handler.sendEmptyMessage(1);
return true;
}
return false;
}
});
}
}如果你有再按一次退出程序的方法 也不影响哈。一样可以用。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
} 在Fragment中却不能直接用此方法来解决了,解决方法如下
public class FindFragment extends Fragment {
private WebView webview_baidu;
private SwipeRefreshLayout swipe_container;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message message) {
switch (message.what) {
case 1: {
webViewGoBack();
}
break;
}
}
};
private void webViewGoBack() {
webview_baidu.goBack();
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.findfragment, null);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
webview_baidu= (WebView) getActivity().findViewById(R.id.webview_baidu);
swipe_container= (SwipeRefreshLayout) getActivity().findViewById(R.id.swipe_container);
swipe_container.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
webview_baidu.loadUrl(webview_baidu.getUrl());
}
});
webview_baidu.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
super.onReceivedSslError(view, handler, error);
handler.proceed();// 接受所有网站的证书
}
});
//取消滚动条
webview_baidu.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
//触摸焦点起作用
webview_baidu.requestFocus();
//设置进度条
webview_baidu.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
//隐藏进度条
swipe_container.setRefreshing(false);
} else {
if (!swipe_container.isRefreshing())
swipe_container.setRefreshing(true);
}
super.onProgressChanged(view, newProgress);
}
});
webview_baidu.getSettings().setJavaScriptEnabled(true);
webview_baidu.getSettings().setSupportZoom(true);//支持对网页缩放
webview_baidu.getSettings().setBuiltInZoomControls(true);//支持android4.0
webview_baidu.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
webview_baidu.getSettings().setDefaultFontSize(18);
//默认缩放模式
webview_baidu.getSettings().setDefaultZoom(WebSettings.ZoomDensity.CLOSE);
// webview_baidu.loadUrl("http://www.cdqldz.com/");
webview_baidu.loadUrl("https://shop149047097.m.taobao.com");
//处理点击返回 进入上一次的网页的事件处理
webview_baidu.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webview_baidu.canGoBack()) {
handler.sendEmptyMessage(1);
return true;
}
return false;
}
});
}
}如果你有再按一次退出程序的方法 也不影响哈。一样可以用。
相关文章推荐
- 垃圾的Android-ListView-setEmptyView
- android复习路之java基础上
- 进度条ProgressDialog使用指南
- android针对对不导航栏遮挡问题解决办法
- Android seekbar自定义
- iOS开发:集成支付宝(遇见的坑和便捷撸代码)
- iOS 根据地址名称 调取系统导航
- 【Android】阅读Android源码的一些姿势
- android关于EventBus优化Application
- Android学习之 Manifest中meta-data扩展元素数据的配置与获取
- Android:控件WebView显示网页
- Unity错误——1.error CS1704: An assembly with the same name `UnityEngine.UI' has already been imported.
- 从0到1 ,搭建一个android项目(仿券妈妈)
- 微信公众平台——模板消息接口
- 通过一个链接打开本地app,或者去下载app
- PYES异常: TypeError: 'NoneType' object is not callable
- iOS 条码及二维码扫描(从相册中读取条形码/二维码)及扫码过程中遇到的坑
- iOS 开发 自定义 framework
- 【Android 进阶】360 的多渠道打包方式
- Android开发人员不得不收集的代码