Android的 - 更新MINDATE和DatePickers的MAXDATE多次为起始日期和结束日期 [英] Android - Update minDate and maxDate of a DatePickers many times for Start date and End date
问题描述
我有两个Datepickers对话框TODATE [开始],寄件者[结束]。
I have two Datepickers dialog for ToDate[start] and FromDate[end].
我同时设置日期选择器最大日期是当前日期使用setMaxDate()函数。
I am setting both datePicker max date is current date by using setMaxDate() function.
我的问题是,当
1)我为改变ToDatePicker的我不会)FromDatePicker日期设定setMaxDate(。
1) I m change the date of ToDatePicker I wont set setMaxDate() of FromDatePicker.
2)我为改变FromDatePicker的日期我不会ToDatePicker的设置setMinDate()。
2) I m change the date of FromDatePicker I wont set setMinDate() of ToDatePicker.
在我的code这项工作第一次的时间,但下一次,当我米逐渐改变或单日期选择不设定setMaxDate(),setMinDate()函数
In My code this work 1st time but next time when I m changing both or single datepicker it not set setMaxDate(), setMinDate() function
这是我的code
dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.US);
Calendar newCalendar = Calendar.getInstance();
//Setting first None value to updatedDate To and from
Util.SaveToSharedPref(MgntNCActivity.this,
Constant.ShaPreMgntNcFilter,
Constant.ShaPreMgntNcFilterUpdatedToDate, Constant.NoValue);
Util.SaveToSharedPref(MgntNCActivity.this,
Constant.ShaPreMgntNcFilter,
Constant.ShaPreMgntNcFilterUpdatedFromDate, Constant.NoValue);
datePickerDiaFrom=new DatePickerDialog(MgntNCActivity.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
Calendar upDateFrom = Calendar.getInstance();
upDateFrom.set(year, monthOfYear, dayOfMonth);
txtFromUpdatedDate.setText(dateFormatter.format(upDateFrom.getTime()));
// System.out.println("Date 1 )GTM : "+upDateTo.getTime().toGMTString());
//setting minimum limit to date Picker 'To'
if (dateFormatter.format(upDateFrom.getTime()).equals(dateFormatter.format(NetworkUtil.getTodayDate()))) {
upDateFrom.set(Calendar.HOUR_OF_DAY, upDateFrom.getMinimum(Calendar.HOUR_OF_DAY));
upDateFrom.set(Calendar.MINUTE, upDateFrom.getMinimum(Calendar.MINUTE));
upDateFrom.set(Calendar.SECOND, upDateFrom.getMinimum(Calendar.SECOND));
upDateFrom.set(Calendar.MILLISECOND, upDateFrom.getMinimum(Calendar.MILLISECOND));
datePickerDiaTo.getDatePicker().setMinDate(upDateFrom.getTimeInMillis());
System.out.println("setting To DatePicker current date as minDate : "
+dateFormatter.format(NetworkUtil.getTodayDate()));
}else{
datePickerDiaTo.getDatePicker().setMinDate(upDateFrom.getTimeInMillis());
System.out.println("setting To DatePicker minDate : "
+dateFormatter.format(upDateFrom.getTime()));
}
//datePickerDiaTo.getDatePicker().setMinDate(upDateFrom.getTimeInMillis());
Util.SaveToSharedPref(MgntNCActivity.this,
Constant.ShaPreMgntNcFilter,
Constant.ShaPreMgntNcFilterUpdatedFromDate, dateFormatter.format(upDateFrom.getTime()));
}
}, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
datePickerDiaTo=new DatePickerDialog(MgntNCActivity.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
Calendar upDateTo = Calendar.getInstance();
upDateTo.set(year, monthOfYear, dayOfMonth);
txtToUpdatedDate.setText(dateFormatter.format(upDateTo.getTime()));
// System.out.println("Date 1 )GTM : "+upDateTo.getTime().toGMTString());
//setting maximum limit to date Picker 'From'
if (dateFormatter.format(upDateTo.getTime()).equals(dateFormatter.format(NetworkUtil.getTodayDate()))) {
upDateTo.set(Calendar.HOUR_OF_DAY, upDateTo.getMaximum(Calendar.HOUR_OF_DAY));
upDateTo.set(Calendar.MINUTE, upDateTo.getMaximum(Calendar.MINUTE));
upDateTo.set(Calendar.SECOND, upDateTo.getMaximum(Calendar.SECOND));
upDateTo.set(Calendar.MILLISECOND, upDateTo.getMaximum(Calendar.MILLISECOND));
datePickerDiaFrom.getDatePicker().setMaxDate(upDateTo.getTimeInMillis());
System.out.println("setting From DatePicker current date as maxDate : "
+dateFormatter.format(NetworkUtil.getTodayDate()));
}else{
datePickerDiaFrom.getDatePicker().setMaxDate(upDateTo.getTimeInMillis());
System.out.println("setting From DatePicker maxDate : "
+dateFormatter.format(upDateTo.getTime()));
}
//datePickerDiaFrom.getDatePicker().setMaxDate(upDateTo.getTimeInMillis());
Util.SaveToSharedPref(MgntNCActivity.this,
Constant.ShaPreMgntNcFilter,
Constant.ShaPreMgntNcFilterUpdatedToDate, dateFormatter.format(upDateTo.getTime()));
}
}, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
//setting max limit to date Picker
datePickerDiaTo.getDatePicker().setMaxDate(NetworkUtil.getTodayDate().getTime());
datePickerDiaFrom.getDatePicker().setMaxDate(NetworkUtil.getTodayDate().getTime());
中的任何一个,请建议我的这个解决方案...
谢谢...
Any one please suggest me solution of this ... Thanks...
推荐答案
终于让我找到解决办法:)
finally I found solution :)
我正在写datePickerDialogsdatePickerDiaFrom','datePickerDiaTo是类变量,这就是为什么当我米在那个时候改变MINDATE或MAXDATE它不能代替previous日期。
I m writing datePickerDialogs 'datePickerDiaFrom' , 'datePickerDiaTo' are class variables that's why when I m changing minDate or maxDate at that time it not replace previous date .
我的解决办法是,
这是我的code:
static long MaximumDate=0,MinimunDate=0;
dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.US);
View.OnClickListener showDatePicker = new View.OnClickListener() {
@Override
public void onClick(View v) {
final View vv = v;
Calendar newCalendar=Calendar.getInstance();
switch (vv.getId()) {
case R.id.txtFromUpdatedDate_MgntNC:
DatePickerDialog dialogFrom=new DatePickerDialog(MgntNCActivity.this, new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
Calendar upDateFrom = Calendar.getInstance();
upDateFrom.set(year, monthOfYear, dayOfMonth);
txtFromUpdatedDate.setText(dateFormatter.format(upDateFrom.getTime()));
MinimunDate=upDateFrom.getTimeInMillis();
}
}, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
if (MaximumDate!=0) {
dialogFrom.getDatePicker().setMaxDate(MaximumDate);
}else{
dialogFrom.getDatePicker().setMaxDate(NetworkUtil.getTodayDate().getTime());
}
dialogFrom.show();
dialogFrom.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface arg0) {
MinimunDate=0;
txtFromUpdatedDate.setText(Constant.NoValue);
}
});
break;
case R.id.txtToUpdatedDate_MgntNC:
DatePickerDialog dialogTo=new DatePickerDialog(MgntNCActivity.this, new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
Calendar upDateTo = Calendar.getInstance();
upDateTo.set(year, monthOfYear, dayOfMonth);
txtToUpdatedDate.setText(dateFormatter.format(upDateTo.getTime()));
MaximumDate=upDateTo.getTimeInMillis();
}
}, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
dialogTo.getDatePicker().setMaxDate(NetworkUtil.getTodayDate().getTime());
if (MinimunDate!=0) {
dialogTo.getDatePicker().setMinDate(MinimunDate);
}else{
//dialog1.getDatePicker().setMinDate(NetworkUtil.getTodayDate().getTime());
}
dialogTo.show();
dialogTo.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface arg0) {
MaximumDate=0;
}
});
break;
default:
break;
}
}
};
txtFromUpdatedDate.setOnClickListener(showDatePicker);
txtToUpdatedDate.setOnClickListener(showDatePicker);
这篇关于Android的 - 更新MINDATE和DatePickers的MAXDATE多次为起始日期和结束日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!