Я занимаюсь исследованиями в течение 2 дней, и я не нашел подобной проблемы нигде в Интернете!
Из основного упражнения я пытаюсь открыть новое действие, содержащее веб-просмотр, который покажетHTML-страница (about.html) в папке android_asset.
Я могу запустить новое действие (test.java) с правильно отображенным веб-представлением, но содержимое веб-страницы просто не отображается.Даже вертикальная полоса прокрутки веб-просмотра отображается (так как содержимое страницы относительно длинное), и я могу прокручивать страницу вверх и вниз, но без содержимого!
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);
}
}
Странно то, что новое действие (test.java) может успешно получить и отобразить заголовок веб-страницы в текстовом представлении, когда я вызываю webview.gettitle (), но HTML-содержимое просто не отображается в веб-представлении.Я вижу только пустой экран с полосами прокрутки.Я подозреваю, что это может быть вызвано логическим значением "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>
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>
О, да, и я забыл упомянуть ранее, что с тем же фрагментом кода,иногда появляется about.html, если я принудительно остановлю и перезапущу приложение на своем телефоне.Однако, это тогда не появилось бы в последующих запусках.В тех случаях, когда он успешно обнаруживает файл about.html и я нажимаю кнопку «Назад», чтобы вернуться к основному действию, он снова исчезает при повторном запуске действия из основного действия.Я заблудился, но у меня есть сильное ощущение, что это «shouldOverrideUrlLoading», что я делаю неправильно.