android webview显示空白页面

我有一个Android应用程序,我正在使用在Android 2.3.3上运行的模拟器开发,嵌入式WebView在嵌套在linearlayout(垂直)的framelayout中。 无论我使用什么代码,它实际上从未做过任何事情。 我在android应用程序设置为INTERNET的权限。 即使在尝试加载HTML代码时也是如此。 我得到一个空白的白页,没有任何错误。 在logcat中也没有。

WebView wview = (WebView)findViewById(R.id.webView1); wview.getSettings().setJavaScriptEnabled(true); 

我尝试了所有这三个尝试将任何内容加载到webview中:

 wview.loadUrl("http://www.google.com"); wview.loadData("

Test

","text/html","utf-8"); wview.loadDataWithBaseURL(null, "

Test

","text/html","utf-8",null);

这三个都给了我相同的结果。 没有。

有任何想法吗?

 wbView.getSettings().setDomStorageEnabled(true); 

这可能有点太晚了,但我想与你分享我的经验,因为我遇到了同样的问题并花了很多时间。

WebView放在RelativeLayout而不是FrameLayout

我测试的内容:我的WebViewonPageFinished()每次都被调用,但在屏幕上我得到了空白页面。 从chrome://inspect WebView调试器我可以通过按下inspect按钮“ping”我的WebView ,然后立即刷新WebView 。 我的想法 – 在FrameLayout没有正确呈现WebView ,而RelativeLayout修复了这个问题(即使invalidate()requestLayout()调用没有帮助)。

我想如果你编辑你的一些代码那么它就没问题了。看看我在下面的例子中是怎么做的。以这种方式为你试试..
用于显示网页

 final WebView wbView = (WebView) findViewById(R.id.WebView); wbView.getSettings().setJavaScriptEnabled(true); wbView.loadUrl("https://play.google.com/store/apps"); wbView.clearView(); wbView.measure(100, 100); wbView.getSettings().setUseWideViewPort(true); wbView.getSettings().setLoadWithOverviewMode(true); 

用于显示HTML:
看本教程..

  • Android的教程的HTML文件中,网页流量

我给了+1,因为这些都是使webview正常工作的有效帮助,但它不是我的问题的解决方案。

我没有意识到的是我在webview布局的include中有一个wrap_content,这导致它的高度为0px。 通过将此设置为fill_parent,我解决了问题。 (带有白色背景的Webview和带有白色背景的应用程序,当它在布局设计器中显示为全高时,你无法真正告诉它不是全高度。)

谢谢你的帮助!

您应该将空String传递给它,而不是传递null。 例如: ""
所以你应该这样称呼它:
wview.loadDataWithBaseURL("", "

Test

","text/html","utf-8","");

clearView已弃用。

使用:

 webView.loadUrl("about:blank") 

我认为你需要的是WebViewClient。 设置webviewclient后调用webview.loadUrl(_url); 有点像这样….

 private void loadUrlInWebView(String _URL){ WebView myWebView = (WebView) findViewById(R.id.webviewer); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setUseWideViewPort(true); webSettings.setLoadWithOverviewMode(true); myWebView.setWebViewClient(new MyWebViewClient()); myWebView.loadUrl(_URL); } private class MyWebViewClient extends WebViewClient{ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show(); } } 

在webview布局中将wrap_content更改为fill_parent。 它对我有用

您可以使用以下代码,这将有所帮助:

 ****WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.setWebViewClient(new MyWebViewClient());**** **private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (Uri.parse(url).getHost().equals("www.example.com")) { // This is my web site, so do not override; let my WebView load the page return false; } // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent); return true; } }**`enter code here` 

尝试增加模拟设备的RAM 。 这解决了我的问题。

我通过查看Android Monitor(Android Studio)中的logcat消息find了这个。 下面的消息让我了解增加RAM的错误:

 W/art: Throwing OutOfMemoryError "Failed to allocate a 6635532 byte allocation with 1170528 free bytes and 1143KB until OOM" W/JavaBrowserViewRendererHelper: Error allocating bitmap E/chromium: [ERROR:java_browser_view_renderer_helper.cc(132)] Error unlocking java bitmap pixels.