2014-07-11 122 views
0

所以我有一個WebView,並且有一個EditText,用戶可以在URL中鍵入,然後按下Go按鈕導航到該URL。還有一個後退按鈕和前進按鈕似乎工作正常(只是調用goBack()和goForward())。Android WebView:顯示URL的EditText在goBack或goForward後不會刷新

現在,問題是刷新EditText以在按下後退或前進按鈕時顯示正確的URL。有時它似乎工作正常,但更多的時候它會落後於1個網頁的點擊。我的意思是,如果我在網頁上(稱爲WP2)並點擊返回,則顯示的網頁將正確返回到前一個(WP1),但URL最初將保持不變(edit)(WP2 )。如果我再次點擊,網頁將再次返回正常(WP0),但現在editText顯示先前顯示的網頁(WP1)的URL。

我希望我的問題很清楚,如果有人有任何建議,我將不勝感激。謝謝!

編輯:我也許應該發佈一些代碼,所以這裏是:

我GoBack的按鈕的OnClick:

leftWebViewBackBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       WebView webView = webViewFrag.web; //this is getting the webview from its fragment. 
       webView.goBack(); 
       urlEditText.setText(webView.getUrl()); 
      } 
     }); 

回答

1

閱讀文檔getUrl()它說

獲取URL爲當前頁面。這並不總是與傳遞給WebViewClient.onPageStarted的URL相同,因爲儘管該URL的負載已經開始,但當前頁面可能尚未更改。

您最好打賭是覆蓋WebViewClient#onPageStarted()並使用setWebViewClient(...)。也有可能你會進入一些像這裏提到的重定向循環(WebView back history without redirects),所以你可能想考慮這個(除非你知道你不會遇到它們)。

的代碼可能是這樣的:

webView.setWebViewClient(new WebViewClient() { 

    .... 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     urlEditText.setText(url); 
    } 

    .... 

} 
+0

這似乎是它可能是真實的。我會玩弄修復代碼,如果我能使它工作,將標記爲正確(無法投票因爲我的帳戶分數太低抱歉)。感謝您的建議! – user3727351

+0

真棒工作完美!我想我第一次嘗試它時,我把它放在setWebChromeClient下,而不是那麼工作。但現在完美! :D非常感謝您的幫助! – user3727351

相關問題