Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在JB及更高版本中加载多个页面后清空webView_Android_Webview_Android 4.2 Jelly Bean - Fatal编程技术网

Android 在JB及更高版本中加载多个页面后清空webView

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

我正在使用网络视图显示android应用程序中的某些内容:

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");
  • 如果布局xml文件中定义的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");
    
    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");
    
  • 这可能是由SSL认证错误引起的。试试这个:
  • ReceivedSlerRor上的公共无效(WebView视图、SslErrorHandler、SslError错误){ handler.procedure(); }
    我已经删除了webView.loadUrl(“about:blank”),但没有区别。我说的不显示的意思是,在加载似乎正确发生之后,webview就在那里,它只是空白。@Rahl_Pryde-您是否检查了onPageStarted/Finished/onReceivedError回调?你看过logcat的输出了吗?你是对的。记录webViewClient方法时,我发现当页面未显示时,甚至不会调用方法onPageStarted。但是我发现应该显示的内容是正确的。@Rahl_Pryde-您可以尝试切换到loadDataWithBaseURL实际上,我最初使用loadDataWithBaseURL发现错误,之后我切换到loadData,因为我认为问题存在,但结果是一样的。谢谢,但这似乎仍在发生。