今日修复了账本的一些BUG:
首先是日期选择对话框的BUG:填写日期编辑框会默认自动填写今日日期,但是当打开日期选择对话框时会发现对话框的日期总是比正确的日期多一个月。
这应该是日期类的月份是从0开始,以及DatePickerDialog的onDateSet函数的缘故,将代码作如下修改:
CDateTime dt=new CDateTime(); DatePickerDialog dlg=new DatePickerDialog(this,new DatePickerDialog.OnDateSetListener(){ @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { txtFrom.setText(String.format("%d-%d-%d",year,month+1,dayOfMonth));//此处月+1 } },dt.year(),dt.month()-1,dt.day());//此处月份-1,注意dt.month()返回的为正常月份。 dlg.show();
接着就是月份最后一天账目的显示错误:如果是在月份的最后一天添加账目的话,点击本月时并不会将本月最后一天的账目显示出来,本年的最后一天的账目也是无法在当年中显示。
初步确认时查询的范围出现的错误,经测试在本月第一天添加的账目可以正常显示,将范围的最后一天加1就可解决这个问题。下面为修改后的代码:
CDateTime dt=new CDateTime(msec); int year =dt.year(); int month=dt.month(); CDateTime dtStart=new CDateTime(year,month,1); CDateTime dtEnd=new CDateTime(year,month,daysInMonth(year,month)); return String.format("between %d and %d",dtStart.startOfDay(),dtEnd.endOfDay()+MSEC_PER_DAY);//注意加的为MSEC_PER_DAY而不是1,因为是以毫秒值判断的日期范围。