2017-05-19 1 views
-1

주 IE : Mon-Sun의 현재 요일을 검색하려고합니다. 그 다음과 다음 주 날짜를 검색해야하는 이전 및 다음 두 개의 단추가 있습니다. 이렇게하면 1 년 동안 무기한으로 회전 할 수 있습니다.Android 캘린더에서 현재 주, 이전 주 및 다음 주 가져 오기

  1. 지난 주 : 2017/05/8-2017/05/(14)
  2. 로드 주 : 2017/05/15-2017/05/(21)
  3. 다음 주 : 2017/05/22-2017/05/28

이 코드는 중간 날짜 Mon-Sun을로드합니다. 다음 버튼을 누르면 다음 주에 다음 요일로 이동합니다. 여기에서 이전을 누르면 처음로드 된 주를 건너 뛰고 다음 주일로 이동합니다. Previous to Next (이전으로 다음)로 다른 방법을 사용하는 경우에도 마찬가지입니다. 다음 버튼과 이전 버튼을 계속 누르면 계속 새로운 주를로드하지 않습니다.

내가 뭘 잘못하고 있니?

초기로드 코드 :

DateFormat format = new SimpleDateFormat("M-dd"); 
Calendar calendar = Calendar.getInstance(); 
calendar.setFirstDayOfWeek(Calendar.MONDAY); 
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 

days = new String[7]; 
for (int i = 0; i < 7; i++) 
{ 
    days[i] = format.format(calendar.getTime()); 
    calendar.add(Calendar.DAY_OF_MONTH, 1); 
} 

다음 주 코드 :

DateFormat format = new SimpleDateFormat("M-dd"); 
Calendar calendar = Calendar.getInstance(); 
calendar.setFirstDayOfWeek(Calendar.MONDAY); 
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
calendar.add(Calendar.DAY_OF_MONTH, 7); 

days = new String[7]; 

for (int i = 0; i < 7; i++) 
{ 
    days[i] = format.format(calendar.getTime()); 
    calendar.add(Calendar.DAY_OF_MONTH, 1); 
} 

지난 주 코드 :

DateFormat format = new SimpleDateFormat("M-dd"); 
Calendar calendar = Calendar.getInstance(); 
calendar.setFirstDayOfWeek(Calendar.MONDAY); 
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
calendar.add(Calendar.DAY_OF_MONTH, -7); 

days = new String[7]; 

for (int i = 0; i < 7; i++) 
{ 
    days[i] = format.format(calendar.getTime()); 
    calendar.add(Calendar.DAY_OF_MONTH, 1); 
} 

솔루션 :

Calendar calendar; // Stick this at the start of your code

초기로드 코드 :

DateFormat format = new SimpleDateFormat("M-dd"); 
calendar = Calendar.getInstance(); 
calendar.setFirstDayOfWeek(Calendar.MONDAY); 
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 

days = new String[7]; 
for (int i = 0; i < 7; i++) 
{ 
    days[i] = format.format(calendar.getTime()); 
    calendar.add(Calendar.DAY_OF_MONTH, 1); 
} 

다음 주 코드 :

DateFormat format = new SimpleDateFormat("M-dd"); 
calendar.setFirstDayOfWeek(Calendar.MONDAY); 
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
calendar.add(Calendar.DAY_OF_MONTH, 7); 

days = new String[7]; 

for (int i = 0; i < 7; i++) 
{ 
    days[i] = format.format(calendar.getTime()); 
    calendar.add(Calendar.DAY_OF_MONTH, 1); 
} 

지난 주 코드 :

DateFormat format = new SimpleDateFormat("M-dd"); 
calendar.setFirstDayOfWeek(Calendar.MONDAY); 
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
calendar.add(Calendar.DAY_OF_MONTH, -7); 

days = new String[7]; 

for (int i = 0; i < 7; i++) 
{ 
    days[i] = format.format(calendar.getTime()); 
    calendar.add(Calendar.DAY_OF_MONTH, 1); 
} 
+0

* "내가 뭘 잘못하고 있니?"* 당신은 당신이 어디에 있는지 기억하지 못합니다. 귀하의 "다음 주 코드"는 현재 표시되는 주와 관계없이 ** 오늘 **에 비해 다음 주에 항상 ** 표시됩니다. – Andreas

+0

어떻게 고칠 것을 제안 하시겠습니까? – BrownT

답변

0

내가 알아 낸 그 호출하여 : 달력 달력 = 일정. getInstance(); 달력을 혼란스럽게 할 때마다.

해결책은 Calendar calendar = Calendar.getInstance()를 제거하는 것입니다. 이전 및 다음 코드에서 가져 와서 변수 Calander 달력을 구현합니다. 코드 시작 부분에. 나는 원래의 코드를 솔루션으로 편집 할 것이다.

+0

"원본 코드를 솔루션으로 편집하지 마십시오." 그것이 바로 답입니다. 서서히 말하면,이 대답은 논평 이상의 것이 아닙니다. – shmosel