如何以编程方式删除android中的alertDialog.builder

如何以编程方式删除android中的alertDialog.builder,android,android-alertdialog,Android,Android Alertdialog,我有一个示例代码,用于每隔20秒显示一条弹出消息(alertDialog.butiler),该消息保存在调度程序中。问题是每20秒就有一个新的弹出窗口在旧弹出窗口上被覆盖,因此我如何克服这个问题,我需要获得一个弹出窗口,如果该弹出窗口是活动的,则不应生成新的弹出窗口。所以,请帮帮我 这是我的示例代码: import android.support.v7.app.AlertDialog; import android.content.DialogInterface; ScheduledFutu

我有一个示例代码,用于每隔20秒显示一条弹出消息(alertDialog.butiler),该消息保存在调度程序中。问题是每20秒就有一个新的弹出窗口在旧弹出窗口上被覆盖,因此我如何克服这个问题,我需要获得一个弹出窗口,如果该弹出窗口是活动的,则不应生成新的弹出窗口。所以,请帮帮我

这是我的示例代码:

import android.support.v7.app.AlertDialog;
import android.content.DialogInterface;


ScheduledFuture<?> s = null;
private ScheduledExecutorService scheduler = null;
scheduler=Executors.newScheduledThreadPool(1);
s=scheduler.scheduleAtFixedRate(new

Runnable() {
     @Override
     public void run () {
            System.out.println("Called the scheduler");
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    if (showAlertDialog) {
                        if (!isFinishing()) {
                            System.out.println("Called the scheduler on ui thread");
                            AlertDialog.Builder builder = new AlertDialog.Builder(WaitForRiderAllocationActivity.this);
                            builder.setCancelable(false);
                            builder.setTitle("TRIP UPDATES");
                            builder.setMessage("All are our riders are busy, do you want to still continue?");
                            builder.setPositiveButton("continue", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialogInterface, int i) {
                                    dialogInterface.dismiss();
                                    finish();
                                }
                            });
                            builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialogInterface, int i) {
                                    Toast.makeText(WaitForRiderAllocationActivity.this, "some text", Toast.LENGTH_LONG).show();
                                    Intent intent = new Intent(WaitForRiderAllocationActivity.this, GiveRideTakeRideActivity.class);
                                    startActivity(intent);
                                    finish();
                                }
                            });
                            builder.show();
                        }
                    }
                }

                );
            }
        },
        0, 20, TimeUnit.SECONDS);
导入android.support.v7.app.AlertDialog;
导入android.content.DialogInterface;
ScheduledFuture s=null;
private ScheduledExecutorService scheduler=null;
scheduler=Executors.newScheduledThreadPool(1);
s=调度器。scheduleAtFixedRate(新
可运行(){
@凌驾
公开作废运行(){
System.out.println(“称为调度程序”);
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
如果(显示警报对话框){
如果(!isFinishing()){
System.out.println(“在ui线程上调用调度程序”);
AlertDialog.Builder=新建AlertDialog.Builder(WaitForRiderAllocationActivity.this);
builder.setCancelable(false);
建造商名称(“行程更新”);
setMessage(“我们所有的车手都很忙,你还想继续吗?”);
setPositiveButton(“继续”,新建DialogInterface.OnClickListener()){
@凌驾
公共void onClick(DialogInterface,inti){
dialogInterface.dismise();
完成();
}
});
setNegativeButton(“取消”,新建DialogInterface.OnClickListener()){
@凌驾
公共void onClick(DialogInterface,inti){
Toast.makeText(WaitForRiderAllocationActivity.this,“一些文本”,Toast.LENGTH_LONG.show();
Intent Intent=新的Intent(WaitForRiderAllocationActivity.this,GiveRideTakeRideActivity.class);
星触觉(意向);
完成();
}
});
builder.show();
}
}
}
);
}
},
0,20,时间单位(秒);

保留对显示的对话框的引用:

 if(mDialog!=null) {
      mDialog.dismiss();
      mDialog = null;
 }
 . . .
 mDialog = builder.show();

保留对已显示的对话框的引用:

 if(mDialog!=null) {
      mDialog.dismiss();
      mDialog = null;
 }
 . . .
 mDialog = builder.show();

将AlertBuilder对象保持全局,并在计划程序中检查生成器对象是否为空,然后创建对话框

// Global object
AlertBuilder builder; 


...
    s = scheduler.scheduleAtFixedRate(new Runnable() {
    @Override
    public void run() {
        System.out.println("Called the scheduler");
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if (showAlertDialog){
                    if(!isFinishing()){
                        System.out.println("Called the scheduler on ui thread");
                        if(builder == null){
                            builder = new AlertDialog.Builder(WaitForRiderAllocationActivity.this);                         builder.setCancelable(false);
                            builder.setTitle("TRIP UPDATES");
                            builder.setMessage("All are our riders are busy, do you want to still continue?");
                            builder.setPositiveButton("continue", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialogInterface, int i) {
                                    dialogInterface.dismiss();
                                    finish();
                                }
                            });
                            builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialogInterface, int i) {
                                    Toast.makeText(WaitForRiderAllocationActivity.this,"some text",Toast.LENGTH_LONG).show();
                                    Intent intent = new Intent(WaitForRiderAllocationActivity.this, GiveRideTakeRideActivity.class);
                                    startActivity(intent);
                                    finish();
                                }
                            });
                            builder.show();
                        }
                    }
                }
            });
        }
    },
    0, 20,
            TimeUnit.SECONDS);

将AlertBuilder对象保持全局,并在计划程序中检查生成器对象是否为空,然后创建对话框

// Global object
AlertBuilder builder; 


...
    s = scheduler.scheduleAtFixedRate(new Runnable() {
    @Override
    public void run() {
        System.out.println("Called the scheduler");
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if (showAlertDialog){
                    if(!isFinishing()){
                        System.out.println("Called the scheduler on ui thread");
                        if(builder == null){
                            builder = new AlertDialog.Builder(WaitForRiderAllocationActivity.this);                         builder.setCancelable(false);
                            builder.setTitle("TRIP UPDATES");
                            builder.setMessage("All are our riders are busy, do you want to still continue?");
                            builder.setPositiveButton("continue", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialogInterface, int i) {
                                    dialogInterface.dismiss();
                                    finish();
                                }
                            });
                            builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialogInterface, int i) {
                                    Toast.makeText(WaitForRiderAllocationActivity.this,"some text",Toast.LENGTH_LONG).show();
                                    Intent intent = new Intent(WaitForRiderAllocationActivity.this, GiveRideTakeRideActivity.class);
                                    startActivity(intent);
                                    finish();
                                }
                            });
                            builder.show();
                        }
                    }
                }
            });
        }
    },
    0, 20,
            TimeUnit.SECONDS);

在显示新对话框之前关闭对话框。builder.Disclease()不支持在调用生成器之前创建生成器对象或者我没有给你带来ranjan,你能说我clearlyAlertDialog;//用于创建对话框实例dialog=builder.create();//关闭dialog.Disclease()在显示新对话框之前关闭对话框。builder.Disclease()不支持在调用生成器之前创建生成器对象或者我没有给你带来ranjan,你能说我clearlyAlertDialog;//用于创建对话框实例dialog=builder.create();//关闭dialog.Disclease()这里什么是mDialog RadekJ?它是alertDialog对象吗?如何初始化mDialog,你能建议我吗?你已经在下面的行中这样做了:builder.show();,方法.show()返回ALRETTALOG,你应该保留对它的引用,然后你可以检查它是否为null,并检查它是否显示(isShowing())如果(builder==null)工作正常,但当我单击“继续”按钮时,活动正在关闭,但该活动不应关闭,需要在20秒后出现下一个弹出窗口。如果(builder==null),请在这方面帮助我工作正常,谢谢你的帮助。这里的mDialog是什么RadekJ?它是alertDialog对象吗?如何初始化mDialog,你能建议我吗?你已经在下面的行中这样做了:builder.show();,方法.show()返回ALRETTALOG,你应该保留对它的引用,然后你可以检查它是否为null并检查它是否显示如果(builder==null)工作正常,但当我单击“继续”按钮时,活动正在关闭,但该活动不应关闭,需要在20秒后获得下一个弹出窗口,请在这方面帮助我,如果(builder==null)工作正常,感谢您的帮助。嗨,suresh,上面的代码工作正常,但是当我单击“继续”按钮时,活动正在关闭,它不应该关闭,它需要在20sec'sHI suresh之后询问弹出窗口,如果(builder==null)工作正常,感谢您的帮助:)您好,suresh,上面的代码工作正常,但是当我单击“继续”按钮时,活动正在关闭,它不应该关闭,它需要在20sec'sHI suresh之后询问弹出窗口,如果(builder==null)工作正常,感谢您的帮助:)