2016-12-22 21 views
0

我有一個示例代碼,顯示彈出消息(alertDialog.butiler),每20秒保存在調度程序中。問題是新彈出窗口每20秒就會覆蓋舊彈出窗口,所以我如何才能克服這個問題,我需要獲得一個彈出窗口,如果彈出窗口處於活動狀態,不應該生成啓動窗口。所以,請幫助我。如何通過編程方式刪除android中的alertDialog.builder

這是我的示例代碼:

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); 
+0

在顯示新對話框之前關閉對話框。 –

+0

builder.dismiss()不支持 –

+0

在調用構建器之前創建構建器對象 –

回答

0

保持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); 
+0

好吧suresh,我會嘗試一次 –

+0

HI suresh,上述代碼工作正常,但是當我點擊繼續按鈕活動正在關閉,它不應該關閉,它需要問20秒後彈出 –

+0

HI suresh,如果(builder == null)工作正常,感謝您的幫助:) –

2

請參考對話框顯示:

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

什麼是mDialog這裏RadekJ?它是alertDialog對象嗎? –

+0

是的,它是由builder.show返回() – RadekJ

+0

如何初始化mDialog,你可以建議我PLZ –

相關問題