alertDialog Android Studio 中的倒计时
Countdown in alertDialog Android Studio
我研究了一些关于 AlertDialog 倒计时的代码,但是当我尝试代码时,它没有倒计时,它只显示时间,当它被点击时,但当它再次被点击时,它被勾选了,但我希望它在对话框中倒计时时的框。那么这是我的代码。
fabTimer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final AlertDialog.Builder builder = new AlertDialog.Builder(downPaymentActivity.this);
builder.setTitle("Time left");
try {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
TimeZone tz = TimeZone.getTimeZone("Asia/Manila");
sdf1.setTimeZone(tz);
String currentDateandTime = sdf1.format(new Date());
String givenDateString = tvDueDate.getText().toString();
Date date1 = sdf1.parse(currentDateandTime);
Date date2 = sdf1.parse(givenDateString);
long restDatesinMillis = date2.getTime() - date1.getTime();
final String hms = String.format("%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(restDatesinMillis),
TimeUnit.MILLISECONDS.toMinutes(restDatesinMillis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(restDatesinMillis)),
TimeUnit.MILLISECONDS.toSeconds(restDatesinMillis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(restDatesinMillis)));
builder.setMessage(hms);
new CountDownTimer(10000, 1000) {
@Override
public void onTick(long l) {
builder.setMessage(hms + (l/1000));
}
@Override
public void onFinish() {
}
}.start();
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.cancel();
}
});
builder.show();
} catch (ParseException e) {
e.printStackTrace();
}
}
});
您可以像这样创建AlertDialog
final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Time left");
builder.setMessage("start time");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.cancel();
}
});
final AlertDialog alert = builder.create();
alert.show();
new CountDownTimer(10000, 1000) {
@Override
public void onTick(long l) {
alert.setMessage("left: "+l);
}
@Override
public void onFinish() {
alert.setMessage("end");
}
}.start();
构建器和对话框是两个独立的实体。您的计时器正在为构建器设置消息在 对话框已经构建之后。
您应该保留对返回内容的引用:
builder.show();
然后调用 setMessage()
。
此外,不要忘记在关闭对话框时取消计时器。
请在您的警报对话框中使用以下代码进行倒计时
new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
mTextField.setText("done!");
}
}.start();
我研究了一些关于 AlertDialog 倒计时的代码,但是当我尝试代码时,它没有倒计时,它只显示时间,当它被点击时,但当它再次被点击时,它被勾选了,但我希望它在对话框中倒计时时的框。那么这是我的代码。
fabTimer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final AlertDialog.Builder builder = new AlertDialog.Builder(downPaymentActivity.this);
builder.setTitle("Time left");
try {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
TimeZone tz = TimeZone.getTimeZone("Asia/Manila");
sdf1.setTimeZone(tz);
String currentDateandTime = sdf1.format(new Date());
String givenDateString = tvDueDate.getText().toString();
Date date1 = sdf1.parse(currentDateandTime);
Date date2 = sdf1.parse(givenDateString);
long restDatesinMillis = date2.getTime() - date1.getTime();
final String hms = String.format("%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(restDatesinMillis),
TimeUnit.MILLISECONDS.toMinutes(restDatesinMillis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(restDatesinMillis)),
TimeUnit.MILLISECONDS.toSeconds(restDatesinMillis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(restDatesinMillis)));
builder.setMessage(hms);
new CountDownTimer(10000, 1000) {
@Override
public void onTick(long l) {
builder.setMessage(hms + (l/1000));
}
@Override
public void onFinish() {
}
}.start();
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.cancel();
}
});
builder.show();
} catch (ParseException e) {
e.printStackTrace();
}
}
});
您可以像这样创建AlertDialog
final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Time left");
builder.setMessage("start time");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.cancel();
}
});
final AlertDialog alert = builder.create();
alert.show();
new CountDownTimer(10000, 1000) {
@Override
public void onTick(long l) {
alert.setMessage("left: "+l);
}
@Override
public void onFinish() {
alert.setMessage("end");
}
}.start();
构建器和对话框是两个独立的实体。您的计时器正在为构建器设置消息在 对话框已经构建之后。
您应该保留对返回内容的引用:
builder.show();
然后调用 setMessage()
。
此外,不要忘记在关闭对话框时取消计时器。
请在您的警报对话框中使用以下代码进行倒计时
new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
mTextField.setText("done!");
}
}.start();