Android webview监听网页对话框点击事件

在Android应用中,当HTML5网页弹出Alert对话框提示文章已删除时,需要监听用户点击确定按钮并返回列表页面刷新数据。解决`WindowManager$BadTokenException`错误的关键在于使用Activity的Context而非ApplicationContext创建AlertDialog。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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了。 
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值