Así que seguí un puesto en evitar pérdidas de memoria WebView, lo que sugiere utilizar un contenedor vistas web y luego añadir programación/quitar la vista web desde el recipiente en códigos de actividad: Memory leak in WebViewAndroid BadTokenException cuando se utiliza una vista Web Container
Sin embargo , llegué a la siguiente accidente al hacer clic en un elemento hTML que impulsa a una lista de opciones para seleccionar, (por ejemplo, fecha/Mes menú desplegable)
W/dalvikvm(17767): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0)
W/WindowManager(129): Attempted to add window with non-application token WindowToken{4094b730 token=null}. Aborting.
FATAL EXCEPTION: main
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
android.view.ViewRoot.setView(ViewRoot.java:561)
android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
android.app.Dialog.show(Dialog.java:265)
android.webkit.WebView$InvokeListBox.run(WebView.java:9170)
android.os.Handler.handleCallback(Handler.java:587)
android.os.Handler.dispatchMessage(Handler.java:92)
android.os.Looper.loop(Looper.java:150)
android.app.ActivityThread.main(ActivityThread.java:4263)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:507)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
dalvik.system.NativeStart.main(Native Method)
tengo el siguiente en mi diseño:
FrameLayout
android:id="@+id/webview_container"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/titlebar">
/FrameLayout>
I tienen la siguiente en onCreate():
mWebViewContainer = (FrameLayout)findViewById(R.id.webview_container);
mWebView = new WebView(getApplicationContext());
mWebViewContainer.addView(mWebView);
mWebView.setWebChromeClient(new WebChromeClient());
también puse un WebViewClient.
He verificado que mWebView.getWindowToken() devuelve un valor no nulo.
¿Alguna idea de por qué podría estar pasando este problema?
Edit: He hecho algo más de experimentar y mirar alrededor, pero todavía no he resuelto este problema. Todo funciona bien si coloco la vista web directamente en el diseño mismo. Pero no quiero hacer eso porque quiero ser capaz de intercambiar opiniones de la web de manera dinámica.
todavía se presenta el error si se reemplaza "getApplicationContext()" por "presente" cuando se crea el WebView? –