2010-09-15 9 views
38

j'ai une WebView dans mon application avec une largeur de wrap_content et la hauteurcontenu WebView clair

avant de l'utiliser webview.loadData, la largeur et la hauteur du était 0,

après que je charge une URL (ou j'utilise webview.loadData), cela affichera une page web.

ma question est, comment puis-je effacer le WebView pour le récupérer à l'état d'origine, tout comme

avant d'loadData ??

+0

duplication possible, http://stackoverflow.com/questions/8939530/how-do-i-clear-previous-webviews-content-before-loading-the-next-webview/25452749#25452749 –

Répondre

1

J'ai utilisé la méthode clearView(), mais j'ai maintenant des problèmes lorsque je charge loadData() juste après, il ne semble pas charger les données.

62

j'ai trouvé cette réponse assez utile: How do I clear a WebView's content before loading a page?

était pour le cacao, mais essentiellement il suffit d'appeler:

webView.loadUrl("about:blank") 
+1

Mais, en utilisant une telle approche, cela semble avoir un comportement, vous devez appuyer sur le bouton de retour deux fois (je pense que l'extra est pour la page blanche), afin de naviguer dans le contenu webview précédent. Il y a une discussion http://stackoverflow.com/a/8939753/72437 mais je ne trouve pas que cela fonctionne pour moi. –

+0

@CheokYanCheng J'utilise webView.clearView(). Je sais, c'est obsolète, mais cette seule solution acceptable pour moi maintenant – Dehimb

4

WebView.clearView();

Ceci effacera la vue de la vue Web.

+3

Attention: obsolète. Utilisez WebView.loadUrl ("about: blank") pour réinitialiser de manière fiable l'état d'affichage et libérer les ressources de la page (y compris tout code JavaScript en cours d'exécution). – vipsy

2

utilisation déclaration suivante avant loadData:

view.loadUrl("javascript:document.open();document.close();"); 
+0

le script ci-dessus est envoyé de Dieu .... le sujet: vide et puis revenir se faire baiser était vraiment frustrant ... –

42

La seule solution complète est de vérifier pour la version SDK.

if (Build.VERSION.SDK_INT < 18) { 
    webView.clearView(); 
} else { 
    webView.loadUrl("about:blank"); 
} 
+1

cette solution m'a aidé byt avec 'webView.destroyDrawingCache();' fonctionne maintenant très bien sur toutes les versions. Sans déstruire le cache de dessin, le contenu ancien clignote sur 4.4. + Androids – xitx

+2

WebView.clearView() est obsolète, utilisez loadUrl ('about: blank') à la place Source: http://developer.android.com/reference/android/webkit /WebView.html#clearView%28%29 –

+1

Comme le suggère @HugoGresse, utilisez 'webView.loadUrl (" about: blank ")' pour toutes les versions du SDK. 'WebView.clearView()' ne fonctionne souvent pas correctement si Javascript est en cours d'exécution, même dans les versions SDK <18. –

0

Qu'en est-il de loadUrl ("about: blank"), puis clearHistory()?

+0

C'était une suggestion de réponse: la confiance n'est pas à 100%. – HelloWorld