android - 在日期选择器(Android)中按年份导航时可以选择超出最大日期
问题描述
当我按年份导航时,我可以选择超过 MAX 日期的日期。
要求:我应该允许用户在 datepicker 中选择今天的日期加上 365 天。所以最小日期 = 今天,最大日期 = 今天加上 364
问题:按年份导航时能够选择超出最大日期
重现问题的步骤:
- 选择了今天的日期(例如:2019 年 10 月 25 日)
- 选择距今天 5 天的日期(例如:2019 年 10 月 30 日)
- 选择年份并转到下一年(例如:2020)
- 您将看到 24-oct-2020 被选中,因为那是我们的 MAX 日期
- 但是当您单击确定时,选择的 onDate 将为您提供一个超出最大日期的日期(例如:2020 年 10 月 30 日)
private void showDatePicker(Calendar selectedDate) {
datePickerDialog = new DatePickerDialog(MainActivity.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
MainActivity.this.onDateSet(year, month, day);
}
},
selectedDate.get(YEAR),
selectedDate.get(MONTH),
selectedDate.get(DAY_OF_MONTH));
Calendar today = Calendar.getInstance();
datePickerDialog.getDatePicker().setMinDate(today.getTimeInMillis() - 1000);
today.add(DATE, 365);
datePickerDialog.getDatePicker().setMaxDate(today.getTimeInMillis());
datePickerDialog.setButton(BUTTON_NEGATIVE, "ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
datePickerDialog.dismiss();
}
});
datePickerDialog.show();
}
public void onDateSet(int year, int month, int day) {
String date = String.valueOf(year).concat("-").concat(String.valueOf(month).concat("-").concat(String.valueOf(day)));
btnDate.setText(date);
}
解决方案
推荐阅读
- python - 回调错误(键错误)在选择用于绘图的列时更新 Dash 中的 scatter.children
- c++ - 在窗口中捕获双击
- sockets - Linux 套接字 - 使用 O_NONBLOCK 设置非阻塞
- c# - 模拟和存根 FtpWebResponse
- python - 将熊猫系列乘以字典值
- amazon-web-services - 指定端点时,无服务器 Localstack lambda 函数向 AWS 发送请求
- python - 如果值为正或负,如何选择条形颜色?
- c# - 序列化时如何自动包含类型信息?
- azure - 有人可以在 Azure devops 中删除/编辑工作项历史记录条目吗?
- twitter-bootstrap - 带有标签和内容的 Bootstrap 5 卡片