您的位置:首页 > 移动开发

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;
}
});
}

}如果你有再按一次退出程序的方法  也不影响哈。一样可以用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: