DatePickerDialog 的 getDatePicker().setMinDate 不起作用
getDatePicker().setMinDate of DatePickerDialog does not work
我希望 DatePickerDialog 不显示当前日期之前的日期。我正在使用 setMinDate(long l)
方法。但它不起作用。
我使用内部 class 设置 minDate:
public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
DatePickerDialog datePickerDialog;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
String s = month + day + year+"";
datePickerDialog = new DatePickerDialog(getActivity(),this,year,month,day);
datePickerDialog.getDatePicker().setMinDate(Long.parseLong(s));
// Create a new instance of DatePickerDialog and return it
return datePickerDialog;
}
public void onDateSet(DatePicker view, int year, int month, int day) {
SelectedDateView.setText(day+ (month + 1) + "-" + "-" + year);
}
}
这是显示它的方法:
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getActivity().getSupportFragmentManager(), "datePicker");
}
试试这个:
long time= System.currentTimeMillis();
datePickerDialog.getDatePicker().setMinDate(time);
setMinDate() 需要 unix 时间(自 1970 年 1 月 1 日以来的毫秒数 00:00:00)。尝试这样的事情:
long currentTime = new Date().getTime();
datePickerDialog.getDatePicker().setMinDate(currentTime);
希望对您有所帮助。
对于早于 23 的 sdk,您必须使用 "System.currentTimeMillis()" 而不是 "cal.getTimeInMillis()"。
sdk < 23: datePickerStart.getDatePicker().setMinDate(System.currentTimeMillis())
sdk > 23: datePickerStart.getDatePicker().setMinDate(cal.getTimeInMillis())
我希望 DatePickerDialog 不显示当前日期之前的日期。我正在使用 setMinDate(long l)
方法。但它不起作用。
我使用内部 class 设置 minDate:
public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
DatePickerDialog datePickerDialog;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
String s = month + day + year+"";
datePickerDialog = new DatePickerDialog(getActivity(),this,year,month,day);
datePickerDialog.getDatePicker().setMinDate(Long.parseLong(s));
// Create a new instance of DatePickerDialog and return it
return datePickerDialog;
}
public void onDateSet(DatePicker view, int year, int month, int day) {
SelectedDateView.setText(day+ (month + 1) + "-" + "-" + year);
}
}
这是显示它的方法:
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getActivity().getSupportFragmentManager(), "datePicker");
}
试试这个:
long time= System.currentTimeMillis();
datePickerDialog.getDatePicker().setMinDate(time);
setMinDate() 需要 unix 时间(自 1970 年 1 月 1 日以来的毫秒数 00:00:00)。尝试这样的事情:
long currentTime = new Date().getTime();
datePickerDialog.getDatePicker().setMinDate(currentTime);
希望对您有所帮助。
对于早于 23 的 sdk,您必须使用 "System.currentTimeMillis()" 而不是 "cal.getTimeInMillis()"。
sdk < 23: datePickerStart.getDatePicker().setMinDate(System.currentTimeMillis())
sdk > 23: datePickerStart.getDatePicker().setMinDate(cal.getTimeInMillis())