gpt4 book ai didi

java - Datepicker 和 timepicker - 设置最大值和最小值

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:25 25 4
gpt4 key购买 nike

我正在尝试制作提醒应用之类的东西。我想让用户选择不是现在的日期和时间(从现在起至少 5 分钟),我还想禁止用户选择太远的日期 - 例如 30 天。我创建了 datePicker 和 timePicker,让它们在单击按钮时弹出,但找不到设置最小值和最大值的方法。

 public void showDateDialog() {
btnDate = (Button) findViewById(R.id.buttonDate);

btnDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(DATE_DIALOG_ID);
}
});
}
public void showTimeDialog() {
btnTime = (Button) findViewById(R.id.buttonTime);

btnTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(TIME_DIALOG_ID);
}
});
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
// create a new DatePickerDialog with values you want to show
return new DatePickerDialog(this, datePickerListener, yearSet, monthSet, daySet);
// create a new TimePickerDialog with values you want to show
case TIME_DIALOG_ID:
return new TimePickerDialog(this, timePickerListener, hourSet, minuteSet, false);
}
return null;
}
private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
yearSet = year;
monthSet = monthOfYear + 1;
daySet = dayOfMonth;
btnDate.setText(new SimpleDateFormat("DD").format(daySet) + "-" + new SimpleDateFormat("MMM").format(monthSet) + "-" + yearSet);
}
};
private TimePickerDialog.OnTimeSetListener timePickerListener = new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hour, int minute) {
hourSet = hour;
minuteSet = minute;
btnTime.setText(hourSet + ":" + new SimpleDateFormat("MM").format(hourSet));
}
};

最佳答案

试试这个:

btnDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

}
};

Calendar c = Calendar.getInstance();
int mYear = c.get(Calendar.YEAR);
int mMonth = c.get(Calendar.MONTH);
int mDay = c.get(Calendar.DAY_OF_MONTH);

final DatePickerDialog datePickerDialog = new DatePickerDialog(
Main23Activity.this, datePickerListener,
mYear, mMonth, mDay);
DatePicker datePicker = datePickerDialog.getDatePicker();

c.add(Calendar.MONTH, +1);
long oneMonthAhead = c.getTimeInMillis();
datePicker.setMaxDate(oneMonthAhead);
datePicker.setMinDate(System.currentTimeMillis() - 1000);
datePickerDialog.show();

}
});

btnTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TimePickerDialog.OnTimeSetListener timePickerListener = new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hour, int minute) {

}
};
Calendar c = Calendar.getInstance();

final TimePickerDialog timePickerDialog = new TimePickerDialog(Main23Activity.this,timePickerListener,
c.get(Calendar.HOUR_OF_DAY),c.get(Calendar.MINUTE)+5,false);
timePickerDialog.show();

}
});

您需要检查用户是否选择了今天日期并且时间小于当前时间条件。

关于java - Datepicker 和 timepicker - 设置最大值和最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34253379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com