2017-03-03 102 views
0

我有一个CalendarView,允许用户选择日期并输入活动。Java Android CalendarView selectedDateChanged没有更新

我有一个每当选择的日期被改变时调用如下方法:

private void selectedDateChanged(CalendarView view, int year, int month, int dayOfMonth){ 
     //note: _Calendar is set to the view when activity loads hence the 
     //the reason for not using view.getDate(); 
     Long timeSinceEpoch = _Calendar.getDate(); 

     GregorianCalendar calendar = new GregorianCalendar(); 
     calendar.setTimeInMillis(timeSinceEpoch); 

     System.out.println(String.format("With gregorian calendar \n Day: %s \n Month: %s \n Year: %s", 
       calendar.DAY_OF_MONTH, calendar.MONTH, calendar.YEAR)); 

    } 

的方法正在每次的时间选择的改变调用时,问题是GregorianCalendar的每次不更新方法叫做。每当我选择一个新的一天,

I/System.out: With gregorian calendar 
I/System.out: Day: 5 
I/System.out: Month: 2 
I/System.out: Year: 1 

打印出来,并不会更新时,选择一个新的日期。

我无法弄清楚如何强制GregorianCalendar的更新和CalendarView的Javadoc说,GETDATE()应返回以毫秒为单位的当前选定的日期,因为Unix纪元

+0

为什么不使用传递参数'year','month','dayOfMonth'? – petey

+1

@petey我将需要从没有这些参数的其他方法获取日期。这只是一个方便的地方来测试它 – kalenpw

回答

0

事实证明Calendar.DAY_OF_MONTHCalendar.MONTHCALENDAR.YEAR与该信息时,你正在寻找,当你调用Calendar.get();

所以固定,这是相当简单的是我了解到,正确的代码是不是字段,但代表整数:

private void selectedDateChanged(CalendarView view, int year, int month, int dayOfMonth){ 
     //note: _Calendar is set to the view when activity loads hence the 
     //the reason for not using view.getDate(); 
     Long timeSinceEpoch = _Calendar.getDate(); 

     GregorianCalendar calendar = new GregorianCalendar(); 
     calendar.setTimeInMillis(timeSinceEpoch); 

     //Notice instead of calling cal.DAY_OF_MONTH directly 
     //I now call calendar.get(Calendar.DAY_OF_MONTH) 
     System.out.println(String.format("With gregorian calendar \n Day: %s \n Month: %s \n Year: %s", 
       calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.MONTH), calendar.get(Calendar.YEAR))); 

    } 
0
System.out.println(String.format("With gregorian calendar \n Day: %s \n Month: %s \n Year: %s", 
      dayOfMonth, month, year)); 
+0

我故意不使用参数,因为我需要能够从其他方法获得日期,月份和年份,我只能访问CalendarView – kalenpw