Android webviewページリスニングダイアログクリックイベント

2772 ワード

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
現在、このような問題が発生しています.HTML 5のページにはAlertダイアログが表示されます.この文章は削除されています.Android側はユーザーが確定ボタンをクリックし、前のリストページに戻ってページを更新し、バックグラウンドで削除されたデータを削除する必要があります.具体的には、次のようにします.
       setting.setJavaScriptEnabled(true);//  js
setting.setJavaScriptCanOpenWindowsAutomatically(true);
        webview.setWebChromeClient(new WebChromeClient() {

            @Override
            public boolean onJsAlert(WebView view, String url, String message,
                                     final JsResult result) {
                Log.i("aaa", "onJsConfirm" + "," + "url: " + url);
                AlertDialog.Builder builder = new AlertDialog.Builder(ArticalDetailAct.this);
                builder.setMessage(message)
                        .setNeutralButton("  ", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface arg0, int arg1) {
                                arg0.dismiss();
                                finish();
                            }
                        }).show();
                result.cancel();
                return true;
            }

            @Override
            public boolean onJsConfirm(WebView view, String url,
                                       String message, final JsResult result) {
                // TODO Auto-generated method stub
                Log.i("aaa", "onJsConfirm" + "," + "url: " + url);
//
//                DialogUtils.dialogBuilder(mContext, "    ", message,
//                        new DialogCallBack() {
//
//                            @Override
//                            public void onCompate() {
//                                Log.i(TAG, "onJsConfirm,onCompate");
//                                result.confirm();
//                            }
//
//                            @Override
//                            public void onCancel() {
//                                Log.i(TAG, "onJsConfirm,onCancel");
//                                result.cancel();
//                            }
//                        });
                return true;
            }
        });

次のような問題が発生したらview.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli
この間違いはnew AlertDialogにある.Builder(mcontext)、ここでのパラメータはAlertDialogですが.Builder(Context context)は、getApplicationContext()で取得したContextを使用するのではなく、Activityを使用する必要があります.Activityが1つしかフォームを追加できないためです.解決方法:new AlertDialog.Builder(Context context)のパラメータはActivity.この(ActivityはあなたのActivityの名前です)を入力するとDialogが正しく作成されます.