如何检查警报是可见的android

时间:2014-10-22 05:44:54

标签: java android alert alertdialog android-alertdialog

如何检查我的警报是否已在屏幕上显示?

 AlertDialog.Builder alert = new AlertDialog.Builder(this);

 alert.show();

我可以通过在我的代码中添加一个标志来设置和重置来维护状态,但是如果已经有一个我可以重用的方法呢?

4 个答案:

答案 0 :(得分:10)

AlertDialog.Builder类上没有isShowing()方法。但是在Dialog课上有一个。

AlertDialog.Builder

Dialog

AlertDialog.Builder用于创建AlertDialog。一旦你有一个AlertDialog的实例,你可以通过调用它上面的isShowing()来确定它是否仍在显示。

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
AlertDialog alertDialog = alertDialogBuilder.create();

if(!alertDialog.isShowing()){   
  //if its visibility is not showing then show here 
   alertDialog.show();       
 }else{
  //do something here... if already showing       
  }

答案 1 :(得分:3)

是的,您可以使用isShowing()进行检查;方法 它也记录在Android Documentation

但是在你的情况下,你需要首先捕获由AlertDialog.Builder构建的AlertDialog。
所以你的代码应该是这样的

AlertDialog alertDialog;

function showDialog() {
    if(alertDialog == null) { 
        //Initial Creation will always show 
        //or you can just use create() if you don't want to show it at initial creation
        AlertDialog.Builder alert = new AlertDialog.Builder(this);
        AlertDialog alertDialog = alert.show();
    else {
        if(alertDialog.isShowing()) {
             alertDialog.hide();
        } else {
             alertDialog.show();
        }
    }
}

答案 2 :(得分:2)

使用此:

AlertDialog alertDialog = alert.create();

//to check if its being shown
if(!alertDialog.isShowing()){
    //do something
    alertDialog.show();
}

如果当前显示警告对话框,它将返回true。因此,在您的情况下,请检查它是否返回false,然后显示它。

希望它有所帮助。

答案 3 :(得分:0)

您可以使用对话框的isShowing方法,或者您可以在创建警告对话框标志时保持标记为0并在显示后将其设为1。