6

アプリケーションで webview を使用しています。Webview は、アプリケーション コンテキストを使用して作成されます。選択ボックスをクリックするとアプリがクラッシュする

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)

この質問がすでに何度も寄せられていることは承知していますが、まだ有効な解決策を見つけていません。この問題は、アクティビティ コンテキストを使用すれば解決しますが、他の懸念事項があるため、アプリケーション コンテキストを使用する必要があります。他のアラートとダイアログについては、webchromeclient で onJsAlert() をオーバーライドして処理しましたが、webview でこれをインターセプトして独自のセレクタ ダイアログを作成する方法を見つけることができません。

どんな種類の提案/ヘルプも大歓迎です。

私のwebview実装のダミーサンプルを追加する

class MyWebView extends WebView
{

 MyWebView(Context context)
 {

    super(context.getApplicationContext());
    setWebChromeClient(myWebChromeClient);
    setWebViewClient(myWebViewClient);
 }
}
4

2 に答える 2

0

そのような場合にご利用いただきたいと思いますextends Activity

ここから参照してください。

そして、これに加えてwebViewを使用したい場合は、次のコードを記述しました。

mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public void onReceivedError(WebView view, int errorCode,
                String description, String failingUrl) {
            // Handle the error
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    });
于 2012-04-10T09:13:04.803 に答える