2011-03-31 2 views
3

아래 코드는 사용자가 날짜를 삽입하고 예상대로 작동하는 DatePickerDialog를 보여줍니다. 날짜가 업데이트되고 사용자는 DatePickerDialog를 시작 버튼이 선택한 날짜를 표시하도록 업데이트되는 대화 닫을 때 :DatePickerDialog를 열면 잘못된 날짜가 표시되어 다른 곳에서 날짜가 변경됩니다.

// Date Picker Section 
@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
    case DATE_DIALOG_ID: 
     Log.i(TAG, "Setting up new date picker "+timestampCalendar); 
     datepicker = new DatePickerDialog(this, 
       mDateSetListener, 
       timestampCalendar.get(Calendar.YEAR), 
       timestampCalendar.get(Calendar.MONTH), 
       timestampCalendar.get(Calendar.DATE));   
     return datepicker; 
    } 
    return null; 
} 

// updates the date we display in the Button 
private void updateDateButton() {  
    timestampTextView.setText(monthName[timestampCalendar.get(Calendar.MONTH)]+", "+timestampCalendar.get(Calendar.DATE)+" "+timestampCalendar.get(Calendar.YEAR)); 
} 

// the callback received when the user "sets" the date in the dialog 
private DatePickerDialog.OnDateSetListener mDateSetListener = 
    new DatePickerDialog.OnDateSetListener() { 
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
     timestampCalendar.set(year, monthOfYear, dayOfMonth); 
     datepicker.updateDate(timestampCalendar.get(Calendar.DATE), timestampCalendar.get(Calendar.MONTH), timestampCalendar.get(Calendar.DATE)); 
     updateDateButton();   
    } 
}; 

을하지만, 여기에 내가 문제가 시작하는 곳입니다. 아래 코드는 timestampCalendar Calendar 객체에 하루를 추가하는 버튼의 onClickListener입니다. DatePickerDialog를 열고 닫으면 "plus1"단추를 사용한 다음 DatePickerDialog를 다시 열면 처음에는 DatePickerDialog를 닫았을 때의 날짜가 여전히 표시됩니다.

plus1.setOnClickListener(new View.OnClickListener() {   
     public void onClick(View view) {  
      timestampCalendar.add(Calendar.DATE, 1); 
      currentTimestamp = timestampCalendar.getTimeInMillis(); 
      updateDateButton(); 
     }    
    }); 

내가 설정 한 청취자의 DatePickerDialog의 updateDate() 메서드를 호출하여이 문제를 해결하려하지만, 그 중 하나가 작동하지 않습니다.

누구든지 아이디어가 있습니까?

datepicker.updateDate(timestampCalendar.get(Calendar.DATE), timestampCalendar.get(Calendar.MONTH), timestampCalendar.get(Calendar.DATE)); 

당신이 plus1 버튼을 사용하고 있습니다 :

답변

4

는이 라인을 호출해야합니다. 그러면 날짜 선택 도구가 업데이트됩니다.

실제로이 코드 줄을 updateDateButton()으로 옮길 수 있습니다. 반복을 중지합니다.

+0

아, 이해해 주셔서 대단히 감사합니다! – Luke