我有一个应用程序,单击列表中的项目会显示带有javascript注入的webview。我需要保存webview对象,以便当用户再次按下相同的项目时,将显示现有的webview,而不是重新加载它并注入再次javascript。我能够在应用程序类中的webview的Arraylist中保存webview对象。
我检查该项是否已存在于Arraylist中,如果它确实存在,则取相应的对象并将该对象设置为活动的内容,如下所示。
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 -- token android.os.BinderProxy@45034510 is not valid; is your activity running?
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
我认为问题在于webview的上下文,但是无法弄清楚如何设置现有对象的上下文或将上下文传递给webview中生成的对话框。
提前致谢。
答案 0 :(得分:1)
我有类似的问题。就我而言,webview位于ActivityGroup中。 ActivityGroups和对话框不能立即使用。在我的情况下,我不得不使用它作为上下文,而是使用getParent()。
temp_WebView=new WebView(getParent());