webView.canGoBack()始终为false

问题描述 投票:8回答:2

我有Android Web View的问题。当我在我的类中覆盖函数shouldOverrideUrlLoading扩展WebViewClient时,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());
java android webview android-webview browser-history
2个回答
© www.soinside.com 2019 - 2024. All rights reserved.