Webview вылетает в окне выбора или любом диалоге - PullRequest
3 голосов
/ 21 января 2011

У меня есть приложение, в котором при щелчке по элементу в списке отображается веб-просмотр с введенным javascript. Мне нужно сохранить объект веб-просмотра, чтобы при повторном нажатии на тот же элемент существующий веб-просмотр показывался вместо перезагрузки и добавленияСнова 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

Я думаю, что проблема в контексте веб-просмотра, но не в состоянии выяснить, как установить контекст для существующего объекта или передать контекст в диалог, созданный внутри веб-обзора.

Заранее спасибо.

1 Ответ

1 голос
/ 24 января 2011

У меня была похожая проблема. В моем случае веб-просмотр был в ActivityGroup. ActivityGroups и диалоги не работают из коробки. В моем случае мне пришлось не использовать это как контекст, вместо этого использовать getParent ().

temp_WebView=new WebView(getParent());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...