Webview在选择框或任何对话框上崩溃

时间:2011-01-21 05:32:43

标签: android dialog webview

我有一个应用程序,单击列表中的项目会显示带有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中生成的对话框。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我有类似的问题。就我而言,webview位于ActivityGroup中。 ActivityGroups和对话框不能立即使用。在我的情况下,我不得不使用它作为上下文,而是使用getParent()。

temp_WebView=new WebView(getParent());