Android webview監聽網頁對話框點擊事件

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an appli

現在項目遇到這樣一個問題,HTML5網頁彈出一個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;
            }
        });



如果大家出現如下問題android.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才能添加一個窗體。 
解決方法:將new AlertDialog.Builder(Context context)中的參數用Activity.this(Activity是你的Activity的名稱)來填充就可以正確的創建一個Dialog了。 
 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章