我正在Android上創建自己的日曆UI實現。爲什麼Android Calendar.set方法在第一次修改嘗試時出錯結果?
this.currentCalendar = Calendar.getInstance(Locale.US);
下面是的onClick監聽器實現改變currentCalendar
個月:它的一個功能是通過簡單地增加或1
默認日曆值降低日曆的月份值改變當前查看的月曆使用初始化值。
@Override
public void onClick(View v) {
int month = this.currentCalendar.get(Calendar.MONTH);
int year = this.currentCalendar.get(Calendar.YEAR);
SimpleDateFormat sdf = new SimpleDateFormat("MMM yyyy", Locale.US);
switch(v.getId()) {
case R.id.calendarNextMonthButton: // Next Button Clicked
month++;
break;
case R.id.calendarPrevMonthButton: // Prev Button Clicked
month--;
break;
}
this.currentCalendar.set(Calendar.MONTH, month);
Log.d("month", String.valueOf(this.currentCalendar.get(Calendar.MONTH)));
this.monthYearText = (TextView) this.v.findViewById(R.id.calendarMonthYearText);
this.monthYearText.setText(sdf.format(this.currentCalendar.getTime()));
}
初始化完成後,日曆顯示正確currentCalendar
個月和年值,例如
this.currentCalendar.set(Calendar.MONTH, month); // debugger says month is 1
,但是,當我試圖顯示月:月= 0(1月),年= 2014 當第一次我點擊下一步按鈕,month
值增加1currentCalendar
個月值是使用設置值爲currentCalendar
,調試器表示月份值爲2(3月)而不是1(2月)。這隻在第一次嘗試點擊下一步按鈕時發生。下次點擊「下一頁」和「上一頁」按鈕時,日曆月份會完全改變。
代碼有問題嗎?
PS:我使用java.util.Calendar爲currentCalendar
。
是的,今天是2014年1月29日。哇,我沒有想到這件事。在更改月份之前,我將'currentCalendar'日期值設置爲1。現在它工作完美。謝謝你爲此節省了我的時間。 – Aryo
@Aryo很高興我能幫到你。你也可以使用'.add()'和'.roll()'進行更精細的控制 - 查看Javadoc主要描述中的最後一段。 –