Android 从CalendarView获取月份

Android 从CalendarView获取月份,android,date,calendarview,Android,Date,Calendarview,我正在使用Android CalendarView创建一个简单的日历应用程序。我需要获得用户在日历视图中按下上一个或下一个按钮的月份。CalendarView没有任何方法来获取用户单击这些按钮时的月份,因此我尝试使用以下代码来提取月份 ViewGroup vg = (ViewGroup) calendarView.getChildAt(0); View subView = vg.getChildAt(0); 但由于某些原因,ViewGroup包含一个DayPickerViewPager小部件

我正在使用Android CalendarView创建一个简单的日历应用程序。我需要获得用户在日历视图中按下上一个或下一个按钮的月份。CalendarView没有任何方法来获取用户单击这些按钮时的月份,因此我尝试使用以下代码来提取月份

ViewGroup vg = (ViewGroup) calendarView.getChildAt(0);
 View subView = vg.getChildAt(0);
但由于某些原因,ViewGroup包含一个DayPickerViewPager小部件和两个AppcompatImageButtons(上一个和下一个按钮),但没有包含实际月份名称的TextView或类似内容

子视图保存DayPickerViewPage。有人知道我如何通过单击上一个/下一个按钮来获取月份信息吗

先谢谢你

CalendarView没有任何方法来获取用户单击这些按钮时的月份

我想是的;至少在您选择给定日期时

long getDate()

获取所选日期(以毫秒为单位)

您可以将其处理为
日历
对象,您可以从中获取月份

参考:

我需要获得用户在日历视图中按下上一个或下一个按钮的月份

您需要使用
setOnDateChangeListener
捕获最终选择的日期

当用户尚未做出选择时,不清楚为什么需要为“下一个/上一个”按钮设置操作事件


但是,如果您这样做了,那么您需要在这两个
AppCompatImageButtons
上设置
setOnClickListener
。但是,一旦您自己这样做,您将覆盖现有的单击侦听器。

不幸的是,您无法使用Android的默认日历视图实现月份更改事件。但是,可以使用另一种自定义MaterialCalendarView,它同时提供日期和月份更改侦听器

使用该视图的示例代码如下所示:

MaterialCalendarView calendarView = new MaterialCalendarView(getActivity());
calendarView.setOnMonthChangedListener(new OnMonthChangedListener() {
@Override
public void onMonthChanged(MaterialCalendarView widget, CalendarDay date) {
      // Do something here
      Date selectedDate = date.getDate();
}
});

日期更改侦听器也可以使用MaterialCalendarView以类似的方式实现。

您不能获取加载到CalendarView中的
Calendar
对象吗?我已尝试调试并找到它,但未成功:/setOnDateChangeListener仅在从日历中选择日期时工作。getDate获取所选日期。我已将自定义事件添加到日历应用程序中。这些事件存储在数据库中,我想按月查询它们。这意味着,如果用户按下“下一步”按钮,文本视图将其文本设置为该月的事件数,并且将使用标题填充recyclerview,以便用户只需滚动并单击所需的事件。您是否需要整个日历视图来选择月份?您可以创建自己的
MonthSelectionView
,并在此基础上定义自己的侦听器。用户还可以单击日期,这将打开一个新的意图。比如说我想在4月7日举办一个活动。用户将转到4月,然后点击7号,这将打开一个带有表单的意图,用户输入所需的数据,然后将其保存到数据库中。我不记得日历视图是什么样子,但如果该月显示在那里,然后必须有一个内部
Calendar
对象,它通过
SimpleDataFormat
函数来获取该字符串。