我在Android中使用webview.但奇怪的是,有时甚至webview canGoBack方法返回true,webview goBack方法也行不通.
if (webView.canGoBack())
webView.goBack();
Run Code Online (Sandbox Code Playgroud)
谢谢你的想法.
我有加载到 web 视图中的动态 URL。我使用 WebChromeClient 来处理 java 脚本事件,因为我需要根据 onJsAlert() 中来自 javascript 的事件重定向用户。网页是第一次加载。当我返回并加载相同的 url 时,它的加载。但是,当我完成操作并收到 javascript 事件时,我开始了一个新活动并完成了 webview 活动。现在,当我加载另一个 URL 时,它没有加载。当我终止应用程序并导航到 webview 活动时,它会再次加载。
以下是我对 webview 的设置
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(false);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setAppCacheEnabled(false);
webView.setWebViewClient(new myWebClient());
webView.setWebChromeClient(new MyJavaScriptChromeClient());
webView.loadUrl(signatureURL);
webView.setHorizontalScrollBarEnabled(false);
Run Code Online (Sandbox Code Playgroud)
这是我用来显示进度对话框的 WebViewClient
public class myWebClient extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (((BaseActivity) activity).checkConnection()) {
// TODO Auto-generated …Run Code Online (Sandbox Code Playgroud) 我正在开发一个包含网络视图的应用程序。在应用程序中的某些时间,它会调用Webview loadUrl。
有时,调用将直接来自UI线程上的事件,而有时,调用来自后台工作线程上的事件。当它来自后台线程时,我调用runOnUIThead()以确保对loadURL的实际调用发生在UI线程上。
我正在体验的是,当loadUrl()源自UI线程时,它工作正常,但是当它来自工作线程时,它却无法工作(即使对loadUrl的实际调用是通过我传递给runOnUIThread()的可运行的)进行的。
设置断点后,我可以看到在两种情况下都在UI线程上调用了loadUrl()。但是它在一种情况下有效,而在另一种情况下无效。
我目前正在筛选Android Webview源代码,以查看是否可以追踪为何有时起作用而有时不起作用的原因。如果有人可以对此事发表任何意见,将不胜感激。
-更新-
我从这里的这篇文章中尝试了一些建议:WebView loadUrl仅工作一次
在调用loadUrl之前主要执行以下操作:
webView.clearCache(true);
webView.loadUrl("Url");
Run Code Online (Sandbox Code Playgroud)
和:
webView.clearCache(true);
webView.clearView();
webView.reload();
webView.loadUrl("about:blank");
webView.loadUrl("Url");
Run Code Online (Sandbox Code Playgroud)
不幸的是,它们都不起作用。