Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法为Java Android中的Datpicker设置最小值和最大值_Java_Android_Date_Datepicker - Fatal编程技术网

无法为Java Android中的Datpicker设置最小值和最大值

无法为Java Android中的Datpicker设置最小值和最大值,java,android,date,datepicker,Java,Android,Date,Datepicker,关于如何使用DatePicker设置最小和最大日期,例如,用户无法设置超过当前日期的日期。同样,用户将无法选择1960年之前的日期,到目前为止,我已经能够设置日期选择器。我的代码如下: public class MainActivity extends FragmentActivity { EditText mEdit; @Override public void onCreate(Bundle savedInstanceState) {

关于如何使用DatePicker设置最小和最大日期,例如,用户无法设置超过当前日期的日期。同样,用户将无法选择1960年之前的日期,到目前为止,我已经能够设置日期选择器。我的代码如下:

 public class MainActivity extends FragmentActivity {

        EditText mEdit;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }

        public void selectDate(View view) {
            DialogFragment newFragment = new SelectDateFragment();
            newFragment.show(getSupportFragmentManager(), "DatePicker");
        }
        public void populateSetDate(int year, int month, int day) {
            mEdit = (EditText)findViewById(R.id.editText1);
            mEdit.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);
            }
        }

    }

DatePickerDialog中,有两种设置minmax date的方法,这两种方法将输入时间设置为毫秒

所以代码是这样的

DatePickerDialog d = new DatePickerDialog(getActivity(), this, yy, mm, dd);
DatePicker dp = d.getDatePicker();
dp.setMaxDate(maxDate);
dp.setMinDate(minDate);
return d;

但是此方法在API 11级中可用,您可以尝试以下方法

public class DatePickerDialogWithMaxMinRange extends DatePickerDialog {

 static int maxYear=2014;  // max date which you want to set
 static int maxMonth=11;
 static int maxDay=31;

 int minYear=1960;        // min date which you want to set
 int minMonth=0;
 int minDay=1;


public DatePickerDialogWithMaxMinRange(Context context,  OnDateSetListener callBack,int minYear,int minMonth,int minDay,int maxYear,int maxMonth,int maxDay) {
    super(context,callBack, maxYear, maxMonth, maxDay);
    this.minDay = minDay;
    this.minMonth = minMonth;
    this.minYear = minYear;
    DatePickerDialogWithMaxMinRange.maxDay = maxDay;
    DatePickerDialogWithMaxMinRange.maxMonth = maxMonth;
    DatePickerDialogWithMaxMinRange.maxYear = maxYear;
}

@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    super.onDateChanged(view, year, monthOfYear, dayOfMonth);

        if (year > maxYear ||monthOfYear > maxMonth && year == maxYear||
                 dayOfMonth > maxDay && year == maxYear && monthOfYear == maxMonth){
            view.updateDate(maxYear, maxMonth, maxDay);
            }else if(year < minYear ||monthOfYear < minMonth && year == minYear||
                 dayOfMonth < minDay && year == minYear && monthOfYear == minMonth){
             view.updateDate(minYear, minMonth, minDay );
            }
     }
}
公共类DatePickerDialog WithMaxMinRange扩展了DatePickerDialog{
static int maxYear=2014;//要设置的最大日期
静态整数maxMonth=11;
静态整数maxDay=31;
int minYear=1960;//要设置的最小日期
int minMonth=0;
int minDay=1;
公共DatePickerDialogWithMaxMinRange(上下文上下文、OnDateSetListener回调、int-minYear、int-minMonth、int-minDay、int-maxYear、int-maxMonth、int-maxDay){
超级(上下文、回调、maxYear、maxMonth、maxDay);
this.minDay=minDay;
this.minMonth=minMonth;
this.minYear=minYear;
DatePickerDialogWithMaxMinRange.maxDay=maxDay;
DatePickerDialogWithMaxMinRange.maxMonth=maxMonth;
DatePickerDialogWithMaxMinRange.maxYear=maxYear;
}
@凌驾
公共无效onDateChanged(日期选择器视图,整数年,整数月,整数月){
super.onDateChanged(视图、年、月、月);
如果(年>最大年|月>最大月和年==最大年||
dayOfMonth>maxDay&&year==maxYear&&monthOfYear==maxMonth){
view.updateDate(maxYear、maxMonth、maxDay);
}如果(年