我的应用程序将网站的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.
}
答案 0 :(得分:1)
如果您分享了shouldOverrideUrlLoading
代码,那将会有所帮助。
但无论如何,最有可能出现问题所在。当您希望它正常运行时,您应该为该方法返回false。如果你回归正确,那么即使你说webView.goBack()
,也不会期望你自己处理它。
此外,根据您加载的页面,您可能会遇到无限重定向循环。
编辑:通过更新您的答案,我可以看到问题。你在打电话:
mWvContent.loadUrl(url);
这就是发生的事情:
调用webView.goBack(),然后你loadUrl(url),然后你返回false告诉webView为你处理一切,所以它会回来。结果结果是你最终在同一地点。
解决方案:删除mWvContent.loadUrl(url);