当我点击对话框,它得到强制关闭。11月以前都很好。但当我选择12月时,它就会消失。请查看代码
// ---------------- For DatePicker ----------------
@Override
protected Dialog onCreateDialog(int id) {
if(date.toString().length() > 0)
{
//12/31/1986
cmonth =(Integer.parseInt(date.substring(0,2)));
cday =(Integer.parseInt(date.substring(3,5)));
cyear =(Integer.parseInt(date.substring(6,10)));
}
else
{
Calendar c = Calendar.getInstance();
cyear = c.get(Calendar.YEAR);
cmonth = c.get(Calendar.MONTH);
cday = c.get(Calendar.DAY_OF_MONTH);
}
switch (id) {
case DATE_DIALOG_ID:
//return new DatePickerDialog(ProfileSetting.this, mDateSetListener, cyear, cmonth-1, cday); //Gets forceclose when it comes to December month
return new DatePickerDialog(ProfileSetting.this, mDateSetListener, cyear, cmonth, cday); // works till November
}
return null;
}
仔细观察了您粘贴在Question中的代码后,发现这是您犯的一个错误。
在onCreateDialog()
的第一个if循环中的,您将以这种格式获得日期12/31/1986。其中,你把月作为12。
在else循环中,您直接从Calendar实例中获取month,这将只给您最多11个月。
因此,要在两种情况下都工作,您需要在第一个if循环中执行月减数。
改变if循环如下
if(date.toString().length() > 0)
{
//12/31/1986
cmonth =(Integer.parseInt(date.substring(0,2)));
cmonth--;
cday =(Integer.parseInt(date.substring(3,5)));
cyear =(Integer.parseInt(date.substring(6,10)));
}
希望对你有用