L'ouverture de nouveaux android activité avec une webview montre un vide (blanc) de l'écran au lieu du contenu html
J'ai cherché pendant 2 jours et je n'ai pas trouvé de problème similaire n'importe où sur internet!
De l'activité principale, je suis en train d'ouvrir une nouvelle activité contenant une webview qui va afficher une page html (about.html) dans le android_asset dossier.
Je suis en mesure de lancer une nouvelle activité (test.java) avec la webview affiche correctement mais le contenu d'une page web n'est tout simplement pas. Même la webview de la barre de défilement verticale est affichée (comme le contenu de la page est relativement long) et je peux faire défiler la page vers le haut et vers le bas, mais sans contenu!
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);
}
}
La chose étrange est que la nouvelle activité (test.java) peuvent réussir à obtenir et afficher la page web de titre dans le textview quand je l'appelle webview.gettitle (), mais le contenu html n'a tout simplement pas rendu dans la webview. Tout ce que je vois est un écran vide avec des barres de défilement. Je soupçonne que c'est le booléen "shouldOverrideUrlLoading" qui pourrait être la cause.
Mise à jour:
Merci pour la réponse.
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 est aussi simple que ce qui est ci-dessous.
<!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>
Ah oui, j'ai oublié de mentionner plus tôt avec le même morceau de code, la about.html montre parfois si j'en ai la force d'arrêter et de redémarrer l'application sur mon téléphone. Cependant, il ne serait alors pas apparaître dans les lancements suivants. Lorsqu'il avec succès s'affiche about.html et j'appuie sur le bouton retour pour revenir à l'activité principale, il disparaît à nouveau quand je re-lancement de l'activité à partir de l'activité principale. Je suis perdu mais j'ai un fort sentiment que c'est "shouldOverrideUrlLoading" que je ne suis pas le faire correctement.
- Quel est le contenu de la about.html et la test.xml?
- Veuillez choisir une réponse qui a fonctionné pour vous.
Vous devez vous connecter pour publier un commentaire.
N'essayez pas de charger l'url donnée dans
shouldOverrideUrlLoading
, et ne reviens pas vrai dans votre cas. Vraiment, de ce qu'il dirait que vous êtes en train de faire, vous ne devriez pas avoir besoin de le remplacer à tous.Retourner true à partir de
shouldOverrideUrlLoading
indique à la WebView qu'il devrait pas charge de l'URL spécifiée. Ce que vous faites - dire la WebView pour commencer à charger à nouveau - est susceptible de provoquer une sorte de boucle interne à l'intérieur de la WebView, qui je suppose est pourquoi vous voyez un comportement étrange.Utiliser cette
au lieu de
J'ai mis à jour la semaine dernière à partir 2.3.4 4.0 sur mon HTC Sensation. Les deux applications que j'ai écrit a un local HTML-site de Contact. Sur 2,3 elle fonctionnait bien, maintenant, je reçois une "Page web non disponible" du site.
J'ai trouvé un autre post ici sur ce site avec le commentaire: "Par l'intermédiaire d'une discussion avec un ingénieur Google, il semble qu'ils ont pris la décision que le fichier://scheme est l'insécurité."
Voir ici pour la solution de contournement: Android 4.0.1 pauses WebView HTML 5 de stockage local?
Vous avez besoin de retourner la valeur true dans shouldOverrideUrlLoading méthode
Essayer ce changement dans votre
text.xml
Ajoutez la ligne suivante dans votre activité qui contient WebView activité
android:hardwareAccelerated="false"
espère que ça aidera
Peut-être que c'était en raison de l'accélération matérielle
a fonctionné pour moi.
https://developer.android.com/guide/topics/graphics/hardware-accel.html
Je peux donner un autre moyen de résoudre ce problème. Il suffit de copier le fichier actif dans le chemin de données
"/data/data/org.test.test/" et les charger dans
WebView
de la manière suivante.Utiliser le code suivant pour copier le fichier HTML à partir d'actifs de chemin de données
rencontrer le même problème.
J'ai essayé les solutions dans lien.
Il n'a pas tous le temps.
Ma situation est la même pour elle.
Il n'y a H5 vidéo dans webview,Il fait bien de première fois et ne parviennent pas alors.
lorsqu'Il échoue,j'ai trouvé un message de journal
quand j'ai appeler la méthode
Mes solutions est réglé webview hauteur de certains dp ou match_parent par défaut.
Il fonctionne bien!
essayez de changement dans votre code
Jetez un oeil à cette tutoriel.