在DatePicker的4.3是在取消按钮点击后,即使设定日期 [英] DatePicker in 4.3 is setting the date even when clicked on cancel button
本文介绍了在DatePicker的4.3是在取消按钮点击后,即使设定日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个datepicker。在日期选择器是除了搭载Android 4.3上的所有设备工作正常。当我点击取消日期选择器的按钮设定日期,而不是cacelling本身。这里是我的code。
DatePickerDialog日期选择器=新DatePickerDialog(C,
新OnDateSetListener(){
@覆盖
公共无效onDateSet(android.widget.DatePicker来看,
年整型,诠释monthOfYear,诠释请将dayOfMonth){
// TODO自动生成方法存根
日历newDate = Calendar.getInstance();
newDate.set(年,monthOfYear,请将dayOfMonth);
tv.setText(CommonDateFunction.format(newDate.getTime(),
CommonDateFunction.FORMAT_DD_MMM_YYYY));
}
},newCalendar.get(Calendar.YEAR)
newCalendar.get(的Calendar.MONTH)
newCalendar.get(Calendar.DAY_OF_MONTH));
datepicker.show();
解决方案
设置日期选择器的按钮来避免这种错误。下面是一个例子。
日历newCalendar = Calendar.getInstance();
最后DatePickerDialog日期选择器=新DatePickerDialog(C,空,newCalendar.get(Calendar.YEAR)
newCalendar.get(的Calendar.MONTH)
newCalendar.get(Calendar.DAY_OF_MONTH));
datepicker.setCancelable(真);
datepicker.setCanceledOnTouchOutside(真);
datepicker.setButton(DialogInterface.BUTTON_POSITIVE,OK,
新DialogInterface.OnClickListener(){
@覆盖
公共无效的onClick(DialogInterface对话,诠释它){
日历newDate = Calendar.getInstance();
INT请将dayOfMonth = datepicker.getDatePicker()getDayOfMonth()。
INT monthOfYear = datepicker.getDatePicker()的getMonth()。
年整型= datepicker.getDatePicker()得到年()。 newDate.set(年,monthOfYear,请将dayOfMonth);
tv.setText(CommonDateFunction.format(newDate.getTime(),
CommonDateFunction.FORMAT_DD_MMM_YYYY));
}
});
datepicker.setButton(DialogInterface.BUTTON_NEGATIVE,取消,
新DialogInterface.OnClickListener(){
@覆盖
公共无效的onClick(DialogInterface对话,诠释它){
dialog.cancel();
// Log.d(选择器,取消!);
}
});
datepicker.show();
I have a datepicker. The datepicker is working fine on all devices except android 4.3. When i click on cancel button of datepicker is setting the date instead of cacelling itself. Here is my code.
DatePickerDialog datepicker = new DatePickerDialog(c,
new OnDateSetListener() {
@Override
public void onDateSet(android.widget.DatePicker view,
int year, int monthOfYear, int dayOfMonth) {
// TODO Auto-generated method stub
Calendar newDate = Calendar.getInstance();
newDate.set(year, monthOfYear, dayOfMonth);
tv.setText(CommonDateFunction.format(newDate.getTime(),
CommonDateFunction.FORMAT_DD_MMM_YYYY));
}
}, newCalendar.get(Calendar.YEAR),
newCalendar.get(Calendar.MONTH),
newCalendar.get(Calendar.DAY_OF_MONTH));
datepicker.show();
解决方案
Set the buttons of the datepicker to avoid this bug. Here is an example.
Calendar newCalendar = Calendar.getInstance();
final DatePickerDialog datepicker = new DatePickerDialog(c,null, newCalendar.get(Calendar.YEAR),
newCalendar.get(Calendar.MONTH),
newCalendar.get(Calendar.DAY_OF_MONTH));
datepicker.setCancelable(true);
datepicker.setCanceledOnTouchOutside(true);
datepicker.setButton(DialogInterface.BUTTON_POSITIVE, "OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Calendar newDate = Calendar.getInstance();
int dayOfMonth = datepicker.getDatePicker().getDayOfMonth();
int monthOfYear = datepicker.getDatePicker().getMonth() ;
int year = datepicker.getDatePicker().getYear();
newDate.set(year, monthOfYear, dayOfMonth);
tv.setText(CommonDateFunction.format(newDate.getTime(),
CommonDateFunction.FORMAT_DD_MMM_YYYY));
}
});
datepicker.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
// Log.d("Picker", "Cancel!");
}
});
datepicker.show();
这篇关于在DatePicker的4.3是在取消按钮点击后,即使设定日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文