2017-12-18 9 views
1

最近、私のWebViewベースのすべてのアプリケーションで、戻るボタンに問題が発生し始めました。一部のAndroidコンポーネントのアップデートで問題が発生しているようですが、問題の解決に役立つ代替ソリューションですか?webView.canGoBack()はもう動作しません

webView.canGoBack()は常にを返します。

PS:前日にすべてのアプリが正常に動作していました。私はこのようにそれを使用してい

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

を自分のcanGoBackを作成し、私はこれをも気​​づきました。 [Chromium BUG 794020](https://bugs.chromium.org/p/chromium/issues/detail?id=794020)と[stackoverflow question 47771494](https://stackoverflow.com/questions/47771494)をご覧ください。 。 – hQuse

+0

正確には、彼らは更新プログラムにできるだけ早く修正することを願っています。 –

答えて

1

....このようなことで

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; 
    } 
} 
関連する問題