Android:无法将当前日期每次设置为日期选择器
我正在使用Android:无法将当前日期每次设置为日期选择器,android,date,datepicker,android-simon-datepicker,Android,Date,Datepicker,Android Simon Datepicker,我正在使用DatePicker向应用程序中的用户显示日期。 但是,我使用onCreateDialog方法向用户显示日期选择器,设置整数变量如下: 静态最终整数日期对话框\u ID=999 然后我调用下面的方法 showDialog(日期对话框ID) 第一次使用当前日期初始化日期选择器。到目前为止一切都很好 @Override protected Dialog onCreateDialog(int id) { Calendar c = Calendar.getInstanc
DatePicker
向应用程序中的用户显示日期。
但是,我使用onCreateDialog方法向用户显示日期选择器,设置整数变量如下:
静态最终整数日期对话框\u ID=999强>
然后我调用下面的方法
showDialog(日期对话框ID)强>
第一次使用当前日期初始化日期选择器。到目前为止一切都很好
@Override
protected Dialog onCreateDialog(int id) {
Calendar c = Calendar.getInstance();
final int myear = c.get(Calendar.YEAR);
final int mmonth = c.get(Calendar.MONTH);
final int mday = c.get(Calendar.DAY_OF_MONTH);
Log.d("Executed", "hihihihihihihi");
switch (id) {
case DATE_DIALOG_ID:
// set date picker as current date
DatePickerDialog _date = new DatePickerDialog(this, AlertDialog.THEME_HOLO_LIGHT, datePickerListener, myear, mmonth,
mday) {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
if (year < myear)
view.updateDate(myear, mmonth, mday);
if (monthOfYear < mmonth && year == myear)
view.updateDate(myear, mmonth, mday);
if (dayOfMonth < mday && year == myear && monthOfYear == mmonth)
view.updateDate(myear, mmonth, mday);
}
};
return _date;
}
return null;
}
@覆盖
受保护的对话框onCreateDialog(int id){
Calendar c=Calendar.getInstance();
最终整数myear=c.get(日历年);
最终整数mm=c.get(日历月);
final int mday=c.get(日历日/月);
Log.d(“已执行”、“HIHIHI”);
开关(id){
案例日期\u对话框\u ID:
//将日期选择器设置为当前日期
DatePickerDialog\u date=新建DatePickerDialog(此,AlertDialog.THEME\u HOLO\u LIGHT,datePickerListener,myear,Amnth,
(星期日){
@凌驾
公共无效onDateChanged(日期选择器视图,整数年,整数月,整数月){
如果(年<年)
view.updateDate(myear,mmonth,mday);
如果(月日<月日<年==myear)
view.updateDate(myear,mmonth,mday);
如果(月日<日和年==月日和月日==月日)
view.updateDate(myear,mmonth,mday);
}
};
返回日期;
}
返回null;
}
但问题是,当我选择当前日期以外的日期时,它会起作用。但当我再次尝试选择日期时,默认情况下,日期选择器会显示我上次选择的日期。每次打开日期选择器时,我无法设置当前日期,因此如何使用日期选择器 在活动中添加以下方法和类:
public void showDatePickerDialog() {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
@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);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
// Do something with the date chosen by the user
}
}
私人日历c;
@凌驾
onCreate(){
c=Calendar.getInstance();
}
@凌驾
受保护的对话框onCreateDialog(int id){
最终整数myear=c.get(日历年);
最终整数mm=c.get(日历月);
final int mday=c.get(日历日/月);
Log.d(“已执行”、“HIHIHI”);
开关(id){
案例日期\u对话框\u ID:
//将日期选择器设置为当前日期
DatePickerDialog\u date=新建DatePickerDialog(此,AlertDialog.THEME\u HOLO\u LIGHT,datePickerListener,myear,Amnth,
(星期日){
@凌驾
公共无效onDateChanged(日期选择器视图,整数年,整数月,整数月){
///在这里,您可以将更新日期设置为日历实例。因此,每当您再次打开它时,它将显示上次更新的日期
c、 集合(年,(月-1),月-日);
如果(年<年)
view.updateDate(myear,mmonth,mday);
如果(月日<月日<年==myear)
view.updateDate(myear,mmonth,mday);
如果(月日<日和年==月日和月日==月日)
view.updateDate(myear,mmonth,mday);
}
};
返回日期;
}
返回null;
}
希望它能帮助你 (英语不是我的第一语言,如有必要请更正)
我认为你的病情检查是错误的
if (year < myear)
view.updateDate(myear, mmonth, mday);
if (monthOfYear < mmonth && year == myear)
view.updateDate(myear, mmonth, mday);
if (dayOfMonth < mday && year == myear && monthOfYear == mmonth)
view.updateDate(myear, mmonth, mday);
if(年份
例如:默认情况下,您将当前日期设置为今天(2016年2月13日)
第1步:
在datePicker中,默认日期为2016年2月13日。现在您选择前一天(2016年12月2日)
现在日期选择器值变为2016年12月2日
在这种情况下,
如果(年份如果(dayOfMonth
if (year < myear)
view.updateDate(myear, mmonth, mday);
if (monthOfYear < mmonth && year == myear)
view.updateDate(myear, mmonth, mday);
if (dayOfMonth < mday && year == myear && monthOfYear == mmonth)
view.updateDate(myear, mmonth, mday);