J'ai créé une petite activité capable de charger deux chaînes HTML différentes dans une vision Web. Lorsque j'exécute l'activité, il commence par charger la chaîne de la variable de page_1. Jusqu'ici tout va bien. La page montre comme prévu. J'ai ajouté un auditeur Onfling qui devrait rendre l'activité charger le contenu de la variable de page_2. Le problème est que même si l'ONFLINGL est appelé et que le LOADURL s'appelle WEBView n'est pas mis à jour?
Mon activité ressemble à ceci: P>
<?xml version="1.0" encoding="utf-8"?> <WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" />
3 Réponses :
Tout d'abord, essayez d'éviter En outre, cela résoudra votre problème. Contre-intuitif je sais, mais bon, c'est la manière Android. P> webview # loaddata (chaîne, chaîne, chaîne) code> comme la peste - c'est un buggy p.o.S. Utilisez webview # loaddawithbaseurl (chaîne, chaîne, chaîne, chaîne, chaîne) code> à la place. @Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if (isHorizontalSwipe(e1, e2, velocityX, velocityY)) {
if (e1.getX() > e2.getX()) {
// Right to left
if (++mPageIndex % 2 == 0) {
mWebView.loadDataWithBaseURL(null, page_1, null, "utf-8", null);
} else {
mWebView.loadDataWithBaseURL(null, page_2, null, "utf-8", null);
}
// Seriously. You must return false for the loadDataWithBaseURL to work. Not kidding. So you could skip this return.
return false;
}
}
return false;
}
Salut Jens, tu es mon héros! Merci d'avoir aidé ma sortie! :-)
@Jens: Bonjour, j'ai le même problème que Sting Andersen et j'ai essayé votre solution.mais toujours, problème est là pour ne pas charger de contenu 2e fois? Pouvez-vous me dire quoi d'autre peut être la solution autre que cela?
Ces solutions ne fonctionnaient pas pour moi. Ce qui finit éventuellement, nettoyez le cache et l'historique avant de charger les données (LoadData a fonctionné dans ce cas):
webView.clearCache(true); webView.clearHistory(); webView.loadData(html, "text/html", "UTF-8");
webview.loaddawithbaseURL (NULL, HTML, NULL, "UTF-8", NULL);
Le cache de compensation et l'historique sont nécessaires sur certains niveaux de système d'exploitation (par exemple 4.1.1, mais pas 4.4.2) Chaque fois qu'une vue Web est rechargée avec une méthode de charge. Même pour une nouvelle vue Web - la mise en œuvre sous-jacente semble contenir sur "Old" Contenu et utilise la même URL (NULL dans mon cas) sur la clé de l'ancien contenu qui n'existe plus et sy Presto un affichage vide. Deux jours, cela m'a juste sauvé après deux jours de frapper ma tête contre un mur avec différents appareils ayant un comportement différent. Maintenant, pour sous-classer ma propre vue Web afin de ne plus l'oublier.
Ceux qui ont toujours le problème que j'ai trouvé une solution rapide, utilisez simplement un gestionnaire pour ce
Vous pouvez obtenir une sortie d'erreur à partir de la console Web si vous ajoutez un Webchromeclient .
mwebview.setwebchromeclient (nouveau Webchromeclient ()); code> devrait le faire.En outre, comment connaissez-vous les appels LoadData sont en cours? Êtes-vous debout avec le débogueur? Imprimer des messages de journal?