Używam widoku internetowego w mojej aplikacji. Webview jest tworzony przy użyciu kontekstu aplikacji. Aplikacja awarii na kliknięciu dowolnego wybierz poleAwaria aplikacji po kliknięciu pola wyboru w widoku strony internetowej
04-10 14:19:14.502: E/AndroidRuntime(12628): Uncaught handler: thread main exiting due to uncaught exception
04-10 14:19:14.542: E/AndroidRuntime(12628): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
04-10 14:19:14.542: E/AndroidRuntime(12628): at android.view.ViewRoot.setView(ViewRoot.java:476)
04-10 14:19:14.542: E/AndroidRuntime(12628): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
04-10 14:19:14.542: E/AndroidRuntime(12628): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
04-10 14:19:14.542: E/AndroidRuntime(12628): at android.app.Dialog.show(Dialog.java:239)
04-10 14:19:14.542: E/AndroidRuntime(12628): at android.webkit.WebView$InvokeListBox.run(WebView.java:9509)
04-10 14:19:14.542: E/AndroidRuntime(12628): at android.os.Handler.handleCallback(Handler.java:609)
04-10 14:19:14.542: E/AndroidRuntime(12628): at android.os.Handler.dispatchMessage(Handler.java:92)
04-10 14:19:14.542: E/AndroidRuntime(12628): at android.os.Looper.loop(Looper.java:123)
04-10 14:19:14.542: E/AndroidRuntime(12628): at android.app.ActivityThread.main(ActivityThread.java:4595)
04-10 14:19:14.542: E/AndroidRuntime(12628): at java.lang.reflect.Method.invokeNative(Native Method)
04-10 14:19:14.542: E/AndroidRuntime(12628): at java.lang.reflect.Method.invoke(Method.java:521)
04-10 14:19:14.542: E/AndroidRuntime(12628): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
04-10 14:19:14.542: E/AndroidRuntime(12628): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
04-10 14:19:14.542: E/AndroidRuntime(12628): at dalvik.system.NativeStart.main(Native Method)
Zdaję sobie sprawę, że to pytanie zostało zadane już wiele razy, ale jestem jeszcze znaleźć żadnego rozwiązania roboczą. Ten problem zostanie rozwiązany, jeśli użyję kontekstu działania, ale muszę użyć kontekstu aplikacji z powodu innych problemów. W przypadku innych alertów i okien dialogowych obsłużyłem je przez przesłonięcie opcji JsAlert() w webchromeclient, ale nie jestem w stanie znaleźć sposobu, w jaki mogę przechwycić to w moim widoku internetowym i utworzyć własne okno dialogowe selektora.
Wszelkie sugestie/pomoc są mile widziane.
Dodawanie obojętne próbkę mojego Webview realizacji
class MyWebView extends WebView
{
MyWebView(Context context)
{
super(context.getApplicationContext());
setWebChromeClient(myWebChromeClient);
setWebViewClient(myWebViewClient);
}
}
co trzymasz w rozszerzeniach to Aktywność czy WebView? – Bhavin
jego widok internetowy. Jest wywoływana z innej czynności. Tworzę widok w przeglądarce w czasie wykonywania (nie używam dla niego żadnego układu), używając kontekstu aplikacji – androgeek
, jeśli wiesz o takiej sytuacji, musisz użyć kontekstu działania zamiast aplikacji, ponieważ próbujesz robić rzeczy z UI bez kontekstu UI, który powinien być z Aktywności. –