2014-07-11 70 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

相关问题