我已经研究了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",我做得不对.
不要尝试加载给定的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)
看看这个教程。
| 归档时间: |
|
| 查看次数: |
22994 次 |
| 最近记录: |