前段时间由于项目时间比较紧张,项目app的一个模块使用框html5开发。开发过程遇到了许多问题。现在把问题列出来方便遇到相同问题的朋友。
1、点击h5页面,一直在h5页面里面点击跳转。然后返回时,要求是层层返回而不是一次性返回。
webview里面有以下三个方法,我重点使用的第一个
mWebView.goBack(); //后退
mWebView.goForward();//前进
mWebView.reload(); //刷新
- //点击后退按钮,让WebView后退一页(也可以覆写Activity的onKeyDown方法)
- webview.setOnKeyListener(new View.OnKeyListener() {
- @Override
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- if (event.getAction() == KeyEvent.ACTION_DOWN) {
- if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack()) { //表示按返回键
- 时的操作
- webview.goBack(); //后退
- //webview.goForward();//前进
- return true; //已处理
- }
- }
- return false;
- }
- });
2.但是你会发现在层层往里面点击跳转,当你返回的时候一直刷新当前页面,这是因为重定向无法正常goBack();
//解决重定向问题
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
WebView.HitTestResult hitTestResult = view.getHitTestResult();
//hitTestResult==null解决重定向问题
if (!TextUtils.isEmpty(url) && hitTestResult == null) {
view.loadUrl(url);
return true;// 返回true,代表事件已处理,事件流到此终止
}
return super.shouldOverrideUrlLoading(view, url);
}
希望可以帮到有需要的朋友,谢谢!