webview goBack()无法正常工作

时间:2018-01-04 10:35:32

标签: android webview

我的应用程序将网站的URL加载到Android WebView中。这个网站有多个页面。

如果我按下后退按钮,则会调用webView.canGoBack()

如果webView.canGoBack()返回false,则该应用退出。 但如果它返回true,则会调用webView.goBack(),但这不会触发任何操作。

以下是onBackPressed()中使用的代码段。

if (mWvContent.isFocused() && mWvContent.canGoBack()) {
    mWvContent.goBack()
} else {
    super.onBackPressed();
    finish();
}

额外信息:我使用WebViewClient,覆盖" shouldOverrideUrlLoading"并启用javascript:

webView.getSettings().setJavaScriptEnabled(true);

有什么想法吗?

编辑: -

private boolean shouldOverrideUrlLoading(final String url) {
     Log.i("", "shouldOverrideUrlLoading() URL : " + url);

     mWvContent.loadUrl(url);

     return false; // Returning True means that application wants to 
            leave the current WebView and handle the url itself, otherwise 
            return false.
     }

1 个答案:

答案 0 :(得分:1)

如果您分享了shouldOverrideUrlLoading代码,那将会有所帮助。

但无论如何,最有可能出现问题所在。当您希望它正常运行时,您应该为该方法返回false。如果你回归正确,那么即使你说webView.goBack(),也不会期望你自己处理它。

此外,根据您加载的页面,您可能会遇到无限重定向循环。

编辑:通过更新您的答案,我可以看到问题。你在打电话:

 mWvContent.loadUrl(url);

这就是发生的事情:

调用webView.goBack(),然后你loadUrl(url),然后你返回false告诉webView为你处理一切,所以它会回来。

结果结果是你最终在同一地点。

解决方案:删除mWvContent.loadUrl(url);

相关问题