使用webview打开新的android活动会显示空白(白色)屏幕而不是html内容

Los*_*ost 25 android webview

我已经研究了2天,我在互联网上的任何地方都没有发现类似的问题!

在主要活动中,我正在尝试打开一个包含webview的新活动,该活动将在android_asset文件夹中显示一个html页面(about.html).

我能够在正确显示webview的情况下启动新活动(test.java),但网页内容却没有显示出来.甚至显示webview的垂直滚动条(因为页面内容相对较长),我可以上下滚动页面但没有内容!

package com.example.test;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;

public class test extends Activity {
private TextView apppagetitle;
private WebView browser_rn;

@Override
public void onCreate(Bundle saveInstanceState) {
    super.onCreate(saveInstanceState);

    setContentView(R.layout.test);

    browser_rn=(WebView)findViewById(R.id.webkit);
    browser_rn.getSettings().setJavaScriptEnabled(true);
    browser_rn.getSettings().setPluginsEnabled(true);
    browser_rn.setScrollBarStyle(0);       

    final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
    apppagetitle=(TextView)findViewById(R.id.apppagetitle);


    browser_rn.setWebViewClient(new WebViewClient() {

        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return false;
        }

        public void onPageFinished(WebView view, String url) {               
            apppagetitle.setText(browser_rn.getTitle());                
        }

        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            if (!isInternetOn()) {
                alertDialog.setTitle("Connection Error");
                alertDialog.setMessage("You need to be connected to the internet.");
            } else {
                alertDialog.setTitle("Error");
                alertDialog.setMessage(description);
            }
            alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    return;
                }
            });
            alertDialog.show();
        }
    });

    browser_rn.loadUrl("file:///android_asset/about.html");
}

public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        browser_rn.clearCache(true);
        browser_rn.clearHistory();
        this.finish();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当我调用webview.gettitle()时,新活动(test.java)可以在textview中成功获取并显示网页标题,但html内容不会在webview中呈现.我只看到一个带滚动条的空白屏幕.我怀疑它是可能导致它的布尔"shouldOverrideUrlLoading".

更新:

感谢回复.

的test.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:myapp="http://schemas.android.com/apk/res/com.example.test"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:background="@drawable/green"
>
<TextView   
android:id="@+id/apppagetitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:text="Odd News"
android:textSize="25px"
android:padding="10px"
/> 
</LinearLayout>
<LinearLayout
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
<WebView  
android:id="@+id/webkit"
android:layout_width="fill_parent" 
android:layout_height="0px"
android:layout_weight="1"
/> 
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

about.html就像下面的内容一样简单.

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<title>About</title> 
</head> 
<body> 
<h3 style="color:#0066dd">About</h3>  

<p>Some text here...</p>

</body> 
</html>
Run Code Online (Sandbox Code Playgroud)

哦,是的,我忘了早些时候提到,使用相同的代码,如果我强制停止并重新启动手机上的应用程序,有时会显示about.html.但是,它不会出现在随后的发布中.有时当它成功显示about.html并按下后退按钮返回主活动时,当我从主活动重新启动活动时它将再次消失.我迷路了,但我有一种强烈的感觉,那就是"shouldOverrideUrlLoading",我做得不对.

top*_*hyr 6

不要尝试加载给定的URL shouldOverrideUrlLoading,也不要在你的情况下从它返回true.真的,从你想要做的事情来看,你根本不需要覆盖它.

返回从真实的shouldOverrideUrlLoading指示,它应该在的WebView 加载指定的URL.你正在做什么 - 告诉WebView再次开始加载它 - 很可能会在WebView中引起某种内部循环,我猜这就是为什么你会看到奇怪的行为.


MKJ*_*ekh -3

尝试更改您的代码

 public boolean shouldOverrideUrlLoading(WebView view, String url) { 
                        return true; 
        } 
Run Code Online (Sandbox Code Playgroud)

看看这个教程