安装了CountDown TImer的对话框

问题描述:

在我的应用程序中,我将推送通知显示为具有两个按钮的对话框是。我需要在对话框标题中显示一个计时器(20秒)。安装了CountDown TImer的对话框

如果用户点击是的,它应该去一个活动。
如果用户单击,在定时器结束之前对话框会被取消。
倒计时结束后,对话框应该消失。我应该如何实现这一点?

这里是我的警报对话框方法

public void showAlertDialog(final Context context, String title, String message, 
          Boolean status) { 
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(context); 

    // Setting Dialog Title 
    alertDialog.setTitle(title); 

    // Setting Dialog Message 
    alertDialog.setMessage(message); 

    // Setting Icon to Dialog 
    //alertDialog.setIcon(R.drawable.fail); 

    // Setting Positive "Yes" Button 
    alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      Toast.makeText(getApplicationContext(), "You clicked on YES", Toast.LENGTH_SHORT).show(); 

     } 
    }); 

    // Setting Negative "NO" Button 
    alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      Toast.makeText(getApplicationContext(), "You clicked on NO", Toast.LENGTH_SHORT).show(); 

      dialog.cancel(); 
     } 
    }); 

    // Showing Alert Message 
    //alertDialog.setIcon(R.drawable.counter); 
    alertDialog.show(); 
} 
+0

具有u您的应用 – 2014-09-03 09:20:18

+0

歌厅PUCH notifecation是我得到 – user1799171 2014-09-03 09:21:09

+0

创建接收器检查PUCH通知来在的onReceive基法打开的对话框时PUCH notificatin加油设备 – 2014-09-03 09:22:34

我不建议加入到倒计时对话框的标题。如果您将其添加到按钮,则更明显的是用户在倒计时完成后会发生什么。

下面是AlertDialog的代码,可以做到这一点。

AlertDialog dialog = new AlertDialog.Builder(this) 
     .setTitle("Notification Title") 
     .setMessage("Do you really want to delete the file?") 
     .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // TODO: Add positive button action code here 
      } 
     }) 
     .setNegativeButton(android.R.string.no, null) 
     .create(); 
dialog.setOnShowListener(new DialogInterface.OnShowListener() { 
    private static final int AUTO_DISMISS_MILLIS = 6000; 
    @Override 
    public void onShow(final DialogInterface dialog) { 
     final Button defaultButton = ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_NEGATIVE); 
     final CharSequence positiveButtonText = defaultButton.getText(); 
     new CountDownTimer(AUTO_DISMISS_MILLIS, 100) { 
      @Override 
      public void onTick(long millisUntilFinished) { 
       defaultButton.setText(String.format(
         Locale.getDefault(), "%s (%d)", 
         positiveButtonText, 
         TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) + 1 //add one so it never displays zero 
       )); 
      } 
      @Override 
      public void onFinish() { 
       if (((AlertDialog) dialog).isShowing()) { 
        dialog.dismiss(); 
       } 
      } 
     }.start(); 
    } 
}); 
dialog.show(); 

dialog with countdown screenshot

+0

相当不错的解决方案;另外 - 我相信,你应该记住timer var并在对话框中取消它。 – 2017-07-05 18:05:26