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