java - 同一对话框上的日期时间选择器不接受 minDate 和 maxDate

标签 java android

我之前在 Google 中找到了关于同一对话框中日期和时间选择器的教程。我试图在日历上设置 minDatemaxDate 但没有任何帮助。我想在用户打开对话框时选择日期,默认日期比当前日期提前 4 天。为此,我试图把

datePicker.setMinDate(System.currentTimeMillis() + 4);

但是当我打开对话框时,什么都没有改变。代码有点长,我会尽量只发布我认为需要的内容。这是 CustomDateTimePicker.java

public void showDialog() {
if (!dialog.isShowing()) {
    if (calendar_date == null)
        calendar_date = Calendar.getInstance();

    selectedHour = calendar_date.get(Calendar.HOUR_OF_DAY);
    selectedMinute = calendar_date.get(Calendar.MINUTE);

    timePicker.setIs24HourView(is24HourView);
    timePicker.setCurrentHour(selectedHour);
    timePicker.setCurrentMinute(selectedMinute);

    //
    datePicker.updateDate(calendar_date.get(Calendar.YEAR),
            calendar_date.get(Calendar.MONTH),
            calendar_date.get(Calendar.DATE));


    dialog.show();

    btn_setDate.performClick();
}
}

public void setAutoDismiss(boolean isAutoDismiss) {
    this.isAutoDismiss = isAutoDismiss;
}

public void dismissDialog() {
   if (!dialog.isShowing())
      dialog.dismiss();
 }

public void setDate(Calendar calendar) {
   if (calendar != null)
    calendar_date = calendar;
}

 public void setDate(Date date) {
   if (date != null) {
    calendar_date = Calendar.getInstance();
    calendar_date.setTime(date);
  }
 }

 public void setDate(int year, int month, int day) {
   if (month < 12 && month >= 0 && day < 32 && day >= 0 && year > 100
        && year < 3000) {
    calendar_date = Calendar.getInstance();
    calendar_date.set(year, month, day);

  }

 }

 public void setTimeIn24HourFormat(int hourIn24Format, int minute) {
 if (hourIn24Format < 24 && hourIn24Format >= 0 && minute >= 0
        && minute < 60) {
    if (calendar_date == null)
        calendar_date = Calendar.getInstance();

    calendar_date.set(calendar_date.get(Calendar.YEAR),
            calendar_date.get(Calendar.MONTH),
            calendar_date.get(Calendar.DAY_OF_MONTH), hourIn24Format,
            minute);

    is24HourView = true;
  }
}

这是在 MainActivity

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    custom = new CustomDateTimePicker(this,
            new CustomDateTimePicker.ICustomDateTimeListener() {

                @Override
                public void onSet(Dialog dialog, Calendar calendarSelected,
                        Date dateSelected, int year, String monthFullName,
                        String monthShortName, int monthNumber, int date,
                        String weekDayFullName, String weekDayShortName,
                        int hour24, int hour12, int min, int sec,
                        String AM_PM) {
                    ((EditText) findViewById(R.id.datePicker)).setText(calendarSelected.get(Calendar.DAY_OF_MONTH)
                                    + "-" + (monthNumber+1) + "-" + year
                                    + " " + hour24 + ":" + min);              
                }

                @Override
                public void onCancel() {

                }
            });

    /**
     * Pass Directly current time format it will return AM and PM if you set
     * false
     */
    custom.set24HourFormat(false);
    /**
     * Pass Directly current data and time to show when it pop up
     */
    custom.setDate(Calendar.getInstance());

    findViewById(R.id.btnCalendar).setOnClickListener(
            new OnClickListener() {

                @Override
                public void onClick(View v) {                       
                    custom.showDialog();
                }

});           

我相信这是我需要修复的部分,但无法准确理解。 如果需要,这里是 CustomDateTimePicker.java 的完整代码 -> http://pastebin.com/UnifiAWu

最佳答案

datePicker.setMinDate(System.currentTimeMillis() + 4);

您将向当前时间添加 4 毫秒并将其作为 minDate 传递。要解决此问题,您必须将 4 天转换为毫秒并将其添加到您的当前时间。

关于java - 同一对话框上的日期时间选择器不接受 minDate 和 maxDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27424356/

相关文章:

Java 编译器警告严重性

java - 如何以独立于平台的方式在 Java 中获取电池电量百分比?

java - 调整大小使事情出错

葡萄糖的 Android BLE 通知

fragment 聚类错误中的 Android 谷歌地图

java - Jenkins war 部署到 Tomcat 7

Java - 继承问题

android - 如何使用 SHOW_OR_CREATE_CONTACT 并为联系人设置照片?

android - 多个副本从 SD 卡加载到 GridView

java - Android - 如何使表格行的高度大小等于