Android 在JB及更高版本中加载多个页面后清空webView
我正在使用网络视图显示android应用程序中的某些内容:Android 在JB及更高版本中加载多个页面后清空webView,android,webview,android-4.2-jelly-bean,Android,Webview,Android 4.2 Jelly Bean,我正在使用网络视图显示android应用程序中的某些内容: WebView webView = (WebView) rootView.findViewById(R.id.web_view); WebSettings settings = webView.getSettings(); settings.setDefaultTextEncodingName("utf-8"); settings.setJavaScriptEnabled(true); settings.setLoadsImagesAu
WebView webView = (WebView) rootView.findViewById(R.id.web_view);
WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
settings.setJavaScriptEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setSupportZoom(false);
webView.loadUrl("about:blank");
webView.loadData(result.getHtmlContent(), "text/html; charset=UTF-8", "UTF-8");
WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
settings.setJavaScriptEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setSupportZoom(false);
webView.setWebViewClient(new CustomWebClient());
webView.clearView();
// add if u need
webView.clearCache(true);
webView.loadData(result.getHtmlContent(), "text/html; charset=UTF-8", "UTF-8");
这在ICS及以下版本中非常有效,但在JB及以上版本中,页面第一次正确加载(通常从2到5/6次)。之后,webView将显示为空白。即使在调试之后,代码似乎也正常运行,只是没有显示出来。查看页面的唯一方法是终止应用程序并重新启动,然后再次发生
WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
settings.setJavaScriptEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setSupportZoom(false);
webView.setWebViewClient(new CustomWebClient());
webView.clearView();
// add if u need
webView.clearCache(true);
webView.loadData(result.getHtmlContent(), "text/html; charset=UTF-8", "UTF-8");
有人知道如何解决这个问题吗?为什么在调用
loadData
之前有webView.loadUrl(“about:blank”)
?如果删除about:blank
load,是否有帮助
WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
settings.setJavaScriptEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setSupportZoom(false);
webView.setWebViewClient(new CustomWebClient());
webView.clearView();
// add if u need
webView.clearCache(true);
webView.loadData(result.getHtmlContent(), "text/html; charset=UTF-8", "UTF-8");
另外,“未显示”也很模糊——是内容已加载但未呈现,还是页面未被导航到?检查您从WebViewClient.onPageStarted
/onPageFinished
回调中获得的URL。如果url==“about:blank”这是一个导航问题,那么从onPageFinished
调用loadData
可能会有所帮助。
webView.loadData(htmlContent, "text/html; charset=UTF-8",null);
WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
settings.setJavaScriptEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setSupportZoom(false);
webView.setWebViewClient(new CustomWebClient());
webView.clearView();
// add if u need
webView.clearCache(true);
webView.loadData(result.getHtmlContent(), "text/html; charset=UTF-8", "UTF-8");
对于大于姜饼MR1的版本
WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
settings.setJavaScriptEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setSupportZoom(false);
webView.setWebViewClient(new CustomWebClient());
webView.clearView();
// add if u need
webView.clearCache(true);
webView.loadData(result.getHtmlContent(), "text/html; charset=UTF-8", "UTF-8");
及
WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
settings.setJavaScriptEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setSupportZoom(false);
webView.setWebViewClient(new CustomWebClient());
webView.clearView();
// add if u need
webView.clearCache(true);
webView.loadData(result.getHtmlContent(), "text/html; charset=UTF-8", "UTF-8");
对于姜饼MR1及以下版本。这对我来说很好
WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
settings.setJavaScriptEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setSupportZoom(false);
webView.setWebViewClient(new CustomWebClient());
webView.clearView();
// add if u need
webView.clearCache(true);
webView.loadData(result.getHtmlContent(), "text/html; charset=UTF-8", "UTF-8");
试试这个,让我知道。每次加载页面之前,请尝试清除此选项。如果需要,请尝试清除缓存
WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
settings.setJavaScriptEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setSupportZoom(false);
webView.setWebViewClient(new CustomWebClient());
webView.clearView();
// add if u need
webView.clearCache(true);
webView.loadData(result.getHtmlContent(), "text/html; charset=UTF-8", "UTF-8");
导致“网页加载完成后,WebView变为空白”的原因可能有:
WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
settings.setJavaScriptEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setSupportZoom(false);
webView.setWebViewClient(new CustomWebClient());
webView.clearView();
// add if u need
webView.clearCache(true);
webView.loadData(result.getHtmlContent(), "text/html; charset=UTF-8", "UTF-8");
WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
settings.setJavaScriptEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setSupportZoom(false);
webView.setWebViewClient(new CustomWebClient());
webView.clearView();
// add if u need
webView.clearCache(true);
webView.loadData(result.getHtmlContent(), "text/html; charset=UTF-8", "UTF-8");
android:layout\u width=“包装内容”
或
android:layout\u height=“包装内容”
WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
settings.setJavaScriptEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setSupportZoom(false);
webView.setWebViewClient(new CustomWebClient());
webView.clearView();
// add if u need
webView.clearCache(true);
webView.loadData(result.getHtmlContent(), "text/html; charset=UTF-8", "UTF-8");
然后在加载页面后,定义内容,WebView尝试“包装”它,因此在某些情况下会将视图的维度减少为0dp,并使您的WebView不可见。
解决方案:将所有这些更改为“填充父项”
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout\u width=“fill\u parent”
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout\u height=“fill\u parent”
android:layout_width="fill_parent"
android:layout_height="fill_parent"
WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
settings.setJavaScriptEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setSupportZoom(false);
webView.setWebViewClient(new CustomWebClient());
webView.clearView();
// add if u need
webView.clearCache(true);
webView.loadData(result.getHtmlContent(), "text/html; charset=UTF-8", "UTF-8");
我已经删除了webView.loadUrl(“about:blank”),但没有区别。我说的不显示的意思是,在加载似乎正确发生之后,webview就在那里,它只是空白。@Rahl_Pryde-您是否检查了onPageStarted/Finished/onReceivedError回调?你看过logcat的输出了吗?你是对的。记录webViewClient方法时,我发现当页面未显示时,甚至不会调用方法onPageStarted。但是我发现应该显示的内容是正确的。@Rahl_Pryde-您可以尝试切换到loadDataWithBaseURL实际上,我最初使用loadDataWithBaseURL发现错误,之后我切换到loadData,因为我认为问题存在,但结果是一样的。谢谢,但这似乎仍在发生。