webView.canGoBack()始终为false

时间:2017-12-16 13:47:46

标签: java android webview android-webview browser-history

我遇到了Android Web View的问题。 当我在我的类中覆盖扩展WebViewClient的函数shouldOverrideUrlLoading时,WebView.canGoBack()始终返回false

以下是我的代码

public class SMWebViewClient extends WebViewClient {

   @Override
   public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
      view.loadUrl(request.getUrl().toString());
      return true;
   }

   @Override
   public boolean shouldOverrideUrlLoading(WebView view, String uri) {
      view.loadUrl(uri);
      return true;
   }
}

在我的活动中:

@BindView(R.id.main_webview) SMWebView webView;

@Override
protected void onCreate(Bundle savedInstanceState) {

    ...
    webView.setWebViewClient(new SMWebViewClient(){
        @Override
        public void onPageFinished(WebView view, String url){

        }
    });
    webView.clearCache(true);
    webView.clearHistory();
    webView.loadUrl(Constant.baseUrl + Constant.homeUrl);
}

问题是函数webView.canGoBack(总是在我的活动中)始终返回false

    @Override
    public void onBackPressed() {
       //ALWAYS FALSE
       if (webView.canGoBack()) {
          webView.goBack();
       }
    } 

如果我不覆盖shouldOverrideUrlLoading,则onBackPressed按预期工作。我的代码出了什么问题?

由于

[编辑]:我也试过(没有成功)以这种方式创建webViewClient:

ebView.setWebViewClient(new SMWebViewClient());

2 个答案:

答案 0 :(得分:7)

当前发布的Chrome(63+)似乎存在问题。 我下载了Chrome Dev(65+),将默认网页视图更改为Chrome Dev 65+,webview.canGoBack()工作正常。

以下是一些关于bug的报道: https://bugs.chromium.org/p/chromium/issues/detail?id=794020

Chrome Dev下载网址: https://play.google.com/store/apps/details?id=com.chrome.dev

更改默认网页浏览量: https://www.chromium.org/developers/androidwebview/android-webview-beta

看起来我们需要等待一段时间才能进行新的Chrome稳定版更新。

答案 1 :(得分:2)

请勿在{{1​​}}中每次加载网址,这会清除views.py的过去历史记录,并检查您如何将if request.method == 'POST': mail = request.POST.get('email') pwd = request.POST.get('pw') a = User.objects.get(pk=mail) 扩展到您自己的WebClient。< / p>