2010-09-15 10 views
38

tengo un WebView en mi aplicación con la anchura y la altura wrap_contentclara WebView contenido

antes de que yo utilizo webview.loadData, la anchura y la altura de la era 0,

Después de cargar una URL (o yo uso webview.loadData), mostrará una página web.

mi pregunta es, ¿Cómo puedo borrar la vista web para recuperar de nuevo a su estado original, al igual que

antes de que loadData ??

+0

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

Respuesta

1

Utilicé el método clearView(), sin embargo ahora estoy teniendo problemas que cuando cargoData() inmediatamente después de él, no parece cargar los datos.

62

me encontré con esta respuesta bastante útiles: How do I clear a WebView's content before loading a page?

fue para el cacao, pero básicamente a llamarlo:

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

Pero, al usar Tal enfoque, esto parece tener un comportamiento, necesita presionar el botón Atrás dos veces (creo que el extra es para la página en blanco), para navegar por el contenido previo de la vista web. Hay una discusión http://stackoverflow.com/a/8939753/72437 pero no me parece que funcione. –

+0

@CheokYanCheng estoy usando webView.clearView(). Lo sé, está en desuso, pero esta es la única solución aceptable para mí ahora – Dehimb

4

WebView.clearView();

Esto borrará la vista de la vista web.

+3

Advertencia: Obsoleto. Use WebView.loadUrl ("about: blank") para restablecer de manera confiable el estado de la vista y liberar los recursos de la página (incluido cualquier JavaScript que se ejecute). – vipsy

2

uso declaración siguiente antes de loadData:

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

la secuencia de comandos anterior es enviada por dios .... el sobre: ​​en blanco y luego volver a atornillarse fue realmente frustrante ... –

42

La única solución completa es comprobar la versión del SDK.

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

esta solución me ayudó con 'webView.destroyDrawingCache();' ahora funciona bien en todas las versiones. Sin destruir el caché de dibujo, el contenido antiguo parpadea en 4.4. + Androides – xitx

+2

WebView.clearView() está en desuso, use loadUrl ('sobre: ​​en blanco') en su lugar Fuente: http://developer.android.com/reference/android/webkit /WebView.html#clearView%28%29 –

+1

Como @HugoGresse sugiere, use 'webView.loadUrl (" about: blank ")' para todas las versiones de SDK. 'WebView.clearView()' a menudo no funciona correctamente si Javascript es ejecutándose, incluso en versiones SDK <18. –

0

¿Qué pasa con loadUrl ("about: blank"), y luego clearHistory()?

+0

Fue una sugerencia para una respuesta. La confianza no está al 100%. – HelloWorld

Cuestiones relacionadas