【问题标题】:datepicker implementation in android to not allow user to select past date than today [duplicate]android中的datepicker实现不允许用户选择比今天过去的日期[重复]
【发布时间】:2014-12-24 11:51:48
【问题描述】:

发生了什么:我的日期选择器允许我输入日期

我要做什么::如何确保日期选择器显示(月、日、年)仅大于或等于当前一个

日期选择器实现:

//*******Date picker implementation******(Start)***//
    public void selectDate(View view) {
        DialogFragment fragment = new SelectDateFragment();
        fragment.show(getFragmentManager(), "DatePicker");
    }

    public void populateSetDate(int year, int month, int day) {
        txtDateId = (TextView) getActivity().findViewById(R.id.txtDateId);
        txtDateId.setText(month+"/"+day+"/"+year);
    }

    public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            final Calendar calendar = Calendar.getInstance();
            int yy = calendar.get(Calendar.YEAR);
            int mm = calendar.get(Calendar.MONTH);
            int dd = calendar.get(Calendar.DAY_OF_MONTH);
            return new DatePickerDialog(getActivity(), this, yy, mm, dd);
        }

        public void onDateSet(DatePicker view, int yy, int mm, int dd) {
            populateSetDate(yy, mm+1, dd);
        }
    }
    //*******Date picker implementation******(End)***//

【问题讨论】:

    标签: android android-datepicker


    【解决方案1】:

    将 DatePicker 对话框设置为当前日期,这样就可以了

    date.getDatePicker().setMaxDate(System.currentTimeMillis());
    

    希望对您有所帮助... :)

    【讨论】:

      【解决方案2】:

      试试这个。希望对你有帮助!!!

      Calendar calendar = Calendar.getInstance(); 
      int currentYear = calendar.get(Calendar.YEAR); 
      int currentMonth = calendar.get(Calendar.MONTH); 
      int currentDay = calendar.get(Calendar.DAY_OF_MONTH);
      
      DatePickerDialog datePickerDialog = new DatePickerDialog(this, listener, currentYear, currentMonth, currentDay);  
       DatePicker dp = datePickerDialog.getDatePicker();  
      dp.setMinDate(calendar.getTimeInMillis()); 
      return datePickerDialog;
      

      【讨论】:

      • 请考虑包含一些关于您的答案的信息,而不是简单地发布代码。我们试图提供的不仅仅是“修复”,而是帮助人们学习。您应该解释原始代码中的问题、您所做的不同之处以及您的更改为何有效。
      【解决方案3】:

      首先定义这些变量:

      private int current_year, year;
      private int current_month, month;
      private int current_day, day;
      

      然后,像这样获取当前日期并在onCreate方法中赋值:

      final Calendar c = Calendar.getInstance();
      current_year = year = c.get(Calendar.YEAR);
      current_month = month = c.get(Calendar.MONTH);
      current_day = day = c.get(Calendar.DAY_OF_MONTH);
      

      最后,只需将您的对话框替换为以下对话框: DatePickerDialog datePickerDialog = new DatePickerDialog(SignUpActivity.this, new DatePickerDialog.OnDateSetListener() {

                  @Override
                  public void onDateSet(DatePicker view, int setYear, int setMonth, int setDay)
                  {
      
                      year = setYear;
                      month = setMonth;
                      day = setDay;
                      btnDOB.setText(new StringBuilder().append(day).append("/").append(month + 1).append("/").append(year));
      
                      etContactNumber.requestFocus();
                  }
      
              }, year, month, day)
              {
                  @Override
                  public void onDateChanged(DatePicker view, int mYear, int mMonth, int mDay)
                  {
                      if (mYear > current_year)
                          view.updateDate(current_year, current_month, current_day);
      
                      if (mMonth > current_month && mYear == current_year)
                          view.updateDate(current_year, current_month, current_day);
      
                      if (mDay > current_day && mYear == current_year && mMonth == current_month)
                          view.updateDate(current_year, current_month, current_day);
      
                  }
              };
      
              datePickerDialog.show();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多