Android 如何在日历视图中选择两个日期

Android 如何在日历视图中选择两个日期,android,android-intent,calendar,Android,Android Intent,Calendar,我试图实现setOnDateChangeListener,目的是选择两个日期值(minDate和maxDate),然后使用Intent将这些值发送到另一个活动。我是否应该以某种方式存储选择的第一个日期(比如minDate),然后在第二次单击(maxDate)后获取第一个日期的值并将其作为数组发送,或者存在其他方法来选择日历中的两个日期 calendar.setOnDateChangeListener(new OnDateChangeListener() { @O

我试图实现setOnDateChangeListener,目的是选择两个日期值(minDate和maxDate),然后使用Intent将这些值发送到另一个活动。我是否应该以某种方式存储选择的第一个日期(比如minDate),然后在第二次单击(maxDate)后获取第一个日期的值并将其作为数组发送,或者存在其他方法来选择日历中的两个日期

        calendar.setOnDateChangeListener(new OnDateChangeListener() {

        @Override
        public void onSelectedDayChange(CalendarView view, int year,
                int month, int dayOfMonth) {

            Toast.makeText(
                    getApplicationContext(),
                    dayOfMonth + "/" + month + "/" + year, Toast.LENGTH_LONG).show();

        }

    });
到目前为止,我得到的是:

            @Override
        public void onSelectedDayChange(CalendarView view, int year,
                int month, int dayOfMonth) {

            Intent intent = new Intent(view.getContext(),
                    DisplayActivity.class);

            String year_month_dayOfMonth = String.valueOf(year) + "-"
                    + String.valueOf(month + 1) + "-"
                    + String.valueOf(dayOfMonth);

            intent.putExtra("date", year_month_dayOfMonth);

            startActivity(intent);



        }

    });
所以,当我点击日历日期时,它会激发DisplayActivity,并且只有一个日期是由intent携带的。问题仍然存在,如何选择两个日期并将它们放在意向中

经过深入研究,我得出结论,日历中的日期范围只能和日期选择器一起完成。所以,我选择date,然后调用DatePicker对话框并对数据进行操作。有人能证实我的结论是否正确吗

已得出以下解决方案:

            public void onSelectedDayChange(CalendarView view, int year,
                int month, int dayOfMonth) {

            int id = CalendarView.generateViewId();

            if ((id % 2) == 0) {

                end_date = calendar.getDate();

                Log.d(LOG_TAG, "End date: " + end_date + "and id = " + id);

            } else {

                start_date = calendar.getDate();

                Log.d(LOG_TAG, "Start date: " + start_date + "and id = "
                        + id);

            }

如果有人愿意分享更好的解决方案或样品,我们将不胜感激。自从Android开发中出现了一个新版本以来,也绝对可以接受任何形式的批评

经过仔细研究,我发现CalendarView.generateView();不是一个好的解决方案,因为id是在应用程序的整个生命周期内分配的。所以,我只是简单地添加了两个按钮来获取最小和最大日期。不是优雅的解决方案,但在stack或其他任何地方都没有找到任何其他解决方案

        button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            date = calendar.getDate();

            Log.d(LOG_TAG, "Date selected: " + date);

        }
    });

我仍然欢迎任何其他建议或示例参考。

Android native CalendarView不支持此功能。你可以用我的图书馆。它叫

您可以突出显示多个这样的事件

ArrayList<String> eventDays = new ArrayList<String>();
eventDays.add("2014-02-25");
eventDays.add(Util.getCurrentDate());

mf.setEvents(eventDays);

还是推荐好的样品?请确认或消除我对日历和日期选择器的怀疑。
mf = (MFCalendarView) findViewById(R.id.mFCalendarView);
mf.setOnCalendarViewListener(new onMFCalendarViewListener() {

    @Override
        public void onDisplayedMonthChanged(int month, int year, String monthStr) {
            }

            @Override
            public void onDateChanged(String date) {
            }
    });