Das Öffnen neuer Android-Aktivitäten mit einer Webansicht zeigt einen leeren (weißen) Bildschirm anstelle des HTML-Inhalts
Recherchiere ich seit 2 Tagen und ich habe nicht gefunden ein ähnliches problem überall im internet!
Aus der Haupttätigkeit, ich versuche, öffnen Sie eine neue Aktivität mit einer webview, die show wird eine html-Seite (about.html) in der android_asset Ordner.
Ich bin in der Lage, starten Sie die neue Aktivität test.java) mit der webview richtig angezeigt, aber die Webseite, die Inhalte einfach nicht angezeigt. Auch die webview vertikale Bildlaufleiste wird angezeigt (der Inhalt der Seite ist relativ lang) und ich kann scrollen Sie die Seite hoch und runter, aber ohne Inhalt!
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);
}
}
Komisch ist, dass die neue Aktivität test.java) kann erfolgreich bekommen und die Webseite anzuzeigen, die Titel in das textview, wenn ich rufe webview.gettitle (), aber der html-Inhalt, der einfach nicht zu Rendern in der Webansicht. Alles, was ich sehe ist ein leerer Bildschirm mit Bildlaufleisten. Ich vermute, es ist der boolean "shouldOverrideUrlLoading", die verursachen könnte es.
Update:
Vielen Dank für die Beantwortung.
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 ist so einfach wie das, was unten ist.
<!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>
Ach ja und ich vergaß zu erwähnen, dass früher, mit dem gleichen Stück code, der about.html würde mal zeigen, wenn ich Kraft-beenden und neu starten der app auf meinem Handy. Allerdings wäre es dann nicht angezeigt, im nachfolgenden Starts. Bei Gelegenheiten, wenn es erfolgreich zeigt sich about.html und ich drücken Sie die zurück-Taste um zurück in das Hauptmenü Aktivität, es wird wieder verschwinden, wenn ich Sie wieder starten Sie die Aktivität aus der Haupttätigkeit. Ich bin verloren, aber ich habe ein starkes Gefühl, es ist "shouldOverrideUrlLoading" , ich mache das nicht richtig.
InformationsquelleAutor der Frage Lost | 2011-01-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie nicht, laden Sie die angegebene url in
shouldOverrideUrlLoading
, und nicht true zurückgeben, von der es in Ihrem Fall entweder. Wirklich, von dem, was es sieht aus wie Sie versuchen zu tun, sollten Sie nicht brauchen, um es zu überschreiben überhaupt.Rückgabe von true aus
shouldOverrideUrlLoading
zeigt die WebView, es sollte nicht laden die angegebene URL. Was Sie tun - sagen die "Webansicht" aus, um zu beginnen, laden Sie es erneut - wird wahrscheinlich dazu führen, dass eine Art innere Schleife innerhalb der WebView, die ich denke, würde ist, warum Sie sehen seltsam Verhalten.InformationsquelleAutor der Antwort tophyr
Ich aktualisiert, Letzte Woche von 2.3.4 auf 4.0 auf mein HTC Sensation. Die beiden apps, die ich geschrieben hatte, eine lokale HTML-Kontakt-Seite. Auf 2.3 lief es gut, jetzt bekomme ich eine "Webseite nicht verfügbar" Seite.
Fand ich einem anderen Beitrag hier auf dieser Seite mit dem Kommentar: "Über einige Diskussion mit einem Google-Ingenieur scheinbar haben Sie die Entscheidung getroffen, dass die Datei://- Schema ist unsicher."
Sehen Sie sich hier die Abhilfe: Android 4.0.1 bricht WebView HTML 5 local storage?
InformationsquelleAutor der Antwort ChristianVK
Sie müssen true zurückgeben, in shouldOverrideUrlLoading Methode
InformationsquelleAutor der Antwort Vikalp Patel
Versuchen, diese Veränderung in Ihrem
text.xml
InformationsquelleAutor der Antwort Dhasneem
Fügen Sie die folgende Zeile in Ihre Tätigkeit, die enthält WebView activity
android:hardwareAccelerated="false"
hoffe, es wird helfen,
InformationsquelleAutor der Antwort
Verwenden Sie diese
statt
InformationsquelleAutor der Antwort user181291
Möglicherweise war Sie aufgrund von hardware-Beschleunigung
arbeitete für mich.
https://developer.android.com/guide/topics/graphics/hardware-accel.html
InformationsquelleAutor der Antwort user8432470
Ich kann dir das ein anderer Weg, um dieses problem zu lösen. Kopieren Sie einfach die asset-Datei in den Daten-Pfad
"/data/data/org.test.test/" und laden Sie es auf
WebView
in der folgenden Weise.Verwenden Sie den folgenden code zum kopieren der HTML-Datei aus dem asset -, Daten-Pfad
InformationsquelleAutor der Antwort Durai
treffen gleiche problem.
Ich habe versucht, die Lösungen in link.
Es scheiterte die ganze Zeit.
Meine situation ist die gleiche.
Es gibt H5 video in webview,Es tut gut, die erste Zeit und nicht dann.
wenn Es scheitert,fand ich eine Nachricht von log
wenn ich die invoke-Methode
Meine Lösungen gesetzt webview Höhe einige dp oder match_parent Standard.
Es funktioniert gut!
InformationsquelleAutor der Antwort Cui Qing
versuchen, die änderung im code
Haben Sie einen Blick auf diese tutorial.
InformationsquelleAutor der Antwort MKJParekh