我目前正在尝试制作日历应用,但是我的代码出了点问题,因此我无法做到这一点。目前,香港专业教育学院制作了一个calendarView并设置了onSelectedDateChangeListner,并为年,月和日分配了字符串。我故意将此值传递给另一个类,但即使我单击另一个日期,它也可以保留此日期(2015.04.20)。对不起,我的英语不是我的母语。以下是相关代码:
MainActivity.java:
mCalendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
Calendar c = Calendar.getInstance();
String calYear = String.valueOf(c.get(Calendar.YEAR));
String calMonth = String.valueOf(c.get(Calendar.MONTH)+1);
String calDay = String.valueOf(c.get(Calendar.DAY_OF_MONTH));
Intent newEvent = new Intent(MainActivity.this, CalendarEvent.class);
newEvent.putExtra("YEAR", calYear);
newEvent.putExtra("MONTH", calMonth);
newEvent.putExtra("DAY", calDay);
startActivity(newEvent);
}
});
CalendarEvent.java
Bundle extras = getIntent().getExtras();
if(extras != null){
mYear = extras.getString("YEAR");
mMonth = extras.getString("MONTH");
mDay = extras.getString("DAY");
}
TextView hello = (TextView)findViewById(R.id.helloworld);
hello.setText(mYear + "/" + mMonth + "/" + mDay);
最佳答案
您正在传递日历c的值,而不是更改日期的值。您可以通过调用“ c.set()”来设置正在使用的日历实例。
mCalendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
Calendar c = Calendar.getInstance();
c.set(year, month, dayOfMonth);
String calYear = String.valueOf(c.get(Calendar.YEAR));
String calMonth = String.valueOf(c.get(Calendar.MONTH)+1);
String calDay = String.valueOf(c.get(Calendar.DAY_OF_MONTH));
Intent newEvent = new Intent(MainActivity.this, CalendarEvent.class);
newEvent.putExtra("YEAR", calYear);
newEvent.putExtra("MONTH", calMonth);
newEvent.putExtra("DAY", calDay);
startActivity(newEvent);
}
});
不过,我认为您要做的就是:
mCalendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
Intent newEvent = new Intent(MainActivity.this, CalendarEvent.class);
newEvent.putExtra("YEAR", String.valueOf(year));
newEvent.putExtra("MONTH", String.valueOf(month));
newEvent.putExtra("DAY", String.valueOf(dayOfMonth));
startActivity(newEvent);
}
});