Android WebView:显示URL的EditText在goBack或goForward之后不刷新

时间:2014-07-11 16:20:26

标签: android webview

所以我有一个WebView,并且有一个EditText,用户可以在URL中输入,然后按Go按钮导航到该URL。还有一个后退按钮和前进按钮似乎工作正常(只需调用goBack()和goForward())。

现在,问题是刷新EditText以在按下后退或前进按钮的任何时候显示正确的URL。有时似乎工作正常,但更常见的是它会落后于1个网页的点击。我的意思是,如果我在网页上(称之为WP2)并单击返回,则显示的网页将正确返回到上一个网页(WP1),但URL最初将在editText中保持不变(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 个答案:

答案 0 :(得分: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);
    }

    ....

}