2017-12-18 100 views
1

最近我所有的WebView基于应用程序开始有后退按钮的问题。它看起来与更新一些Android组件的问题,请帮助解决这个问题或一些替代解决方案?webView.canGoBack()不能工作

webView.canGoBack()总是返回false

PS:所有应用程序在前几天都正常工作。

我使用的是这样的:

@Override 
    public void onBackPressed() { 
     if (webView.canGoBack()) { 
      webView.goBack(); 
     } else { 
      super.onBackPressed(); 
     } 
    } 
+2

我也注意到这一点。查看[Chromium BUG 794020](https://bugs.chromium.org/p/chromium/issues/detail?id=794020)以及[stackoverflow question 47771494](https://stackoverflow.com/questions/47771494) 。 – hQuse

+0

确切地说,希望他们能够在更新中尽快修复它。 –

回答

1

通过这样的创建自己的canGoBack ....

Initally you need add the home page.. 
ArrayList<String> urls = new ArrayList<>(); 
urls.add(www.google.com); 

//after that you need override this method 
webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      Log.d(TAG, "shouldOverrideUrlLoading: "+url); 
      urls.add(url); 
      return true; 
     } 
     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) 
     { 
      super.onPageStarted(view, url, favicon); 
      pDialog.show(); 
     } 
     @Override 
     public void onPageFinished(WebView view, final String url) { 
      pDialog.dismiss(); 
     } 
    }); 

//for onBackPressed, same like in custom button for back click option 
@Override 
public void onBackPressed() { 
    if(!canGoBack() 
    { 
     super.onBackPressed(); 
    } 
} 

//Custome Method 
public boolean canGoBack() 
{ 
    if(urls.size() == 1) // home page 
    { 
     return false; 
    } 
    else 
    { 
     webView.loadUrl(urls.get(urls.size()-2)); // load previous url 
     urls.remove(urls.size()-1); // remove last loaded url 
     return true; 
    } 
}