I have an application in which clicking on an item in a list shows a web view with javascript injected. I need to save the webview object so that when the user clicks the same element again, the existing webview will be shown instead of reloading and entering javascript again. I can save the webview object in the Arraylist webview inside the application class.
I check if the element exists in the Arraylist, and if it exists, take the corresponding object and set the object as the content of the activity, as shown below.
temp_WebView=new WebView(this);
temp_WebView=(WebView)application.getWebview(j);
ViewGroup parent = (ViewGroup) application.getWebview(j).getParent();
parent.removeView(application.getWebview(j));
setContentView(temp_WebView);
This works fine but when clicking on any of the select box inside the webview where a dialog is populated it gets crashed with the following error,
WARN/WindowManager(60): Attempted to add application window with unknown token HistoryRecord{4506d1e8 tabviewapp.com/.Webresults}. Aborting.
DEBUG/AndroidRuntime(500): Shutting down VM
WARN/dalvikvm(500): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
ERROR/AndroidRuntime(500): FATAL EXCEPTION: main
ERROR/AndroidRuntime(500): android.view.WindowManager$BadTokenException: Unable to add window
ERROR/AndroidRuntime(500): at android.view.ViewRoot.setView(ViewRoot.java:505)
ERROR/AndroidRuntime(500): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
ERROR/AndroidRuntime(500): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
ERROR/AndroidRuntime(500): at android.view.Window$LocalWindowManager.addView(Window.java:424)
ERROR/AndroidRuntime(500): at android.app.Dialog.show(Dialog.java:241)
ERROR/AndroidRuntime(500): at android.webkit.WebView$InvokeListBox.run(WebView.java:7095)
ERROR/AndroidRuntime(500): at android.os.Handler.handleCallback(Handler.java:587)
ERROR/AndroidRuntime(500): at android.os.Handler.dispatchMessage(Handler.java:92)
ERROR/AndroidRuntime(500): at android.os.Looper.loop(Looper.java:123)
ERROR/AndroidRuntime(500): at android.app.ActivityThread.main(ActivityThread.java:4627)
ERROR/AndroidRuntime(500): at java.lang.reflect.Method.invokeNative(Native Method)
ERROR/AndroidRuntime(500): at java.lang.reflect.Method.invoke(Method.java:521)
ERROR/AndroidRuntime(500): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
ERROR/AndroidRuntime(500): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
ERROR/AndroidRuntime(500): at dalvik.system.NativeStart.main(Native Method)
WARN/ActivityManager(60): Force finishing activity tabviewapp.com/.Webresults
I think the problem is with the web view context, but Iβm not able to figure out how to set the context for an existing object or pass the context to the dialog generated inside the web view.
Thanks in advance.