代码之家  ›  专栏  ›  技术社区  ›  user984003

从其他函数中取消alertDialog

  •  1
  • user984003  · 技术社区  · 8 年前

    如何从创建alertDialog的函数外部关闭它?

    如果显示警报,则我希望在应用程序关闭然后恢复时将其解除。但是,我不知道如何从另一个侦听器(onResume)获取该对话框。

    webView.setWebChromeClient(new WebChromeClient() {
        ...
    
        public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
            // ... show alert on error
            new AlertDialog.Builder(getContext())
                    .setMessage(alertMessage)
                    .setTitle(alertTitle)
                    .setPositiveButton("OK",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int which) {
                                    dialog.dismiss();
                                }
                            })
                    .show();
        }
    
        public void onResume(){
             super.onResume();
             // Want to dismiss alert dialog here
         }
    
     }
    
    2 回复  |  直到 8 年前
        1
  •  3
  •   Yuliwee    8 年前

    将AlertDialog保存在专用变量中。所以您可以稍后使用它并调用dialog。Disclose()。

    private AlertDialog dialog;
    

    在函数onReceivedError中:

    dialog = new AlertDialog.Builder.....
    
        2
  •  1
  •   kishan verma    8 年前

    全局声明AlertDialog对象

    private AlertDialog dialog;
    

    并在如下函数中使用您的代码

    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        // ... show alert on error
       dialog = new AlertDialog.Builder(getContext())
                .setMessage(alertMessage)
                .setTitle(alertTitle)
                .setPositiveButton("OK",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        })
                .show();}
    

    在您的函数之外,您可以使用对话框的对象取消它

    dialog.dismiss();