2012-11-27 3 views
0

날짜를 표시하는 데 사용되는 내 활동에 TextView가 있습니다. 사용자가 TextView를 클릭하면 다음과 같이 DatePickerDialog를 실행합니다.대화 상자 업데이트

public void onClick(View v) { 
    if (v.getId() == R.id.date_wrapper) { 
     showDialog(DATE_DIALOG_ID); 
    } 
} 

@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
    case DATE_DIALOG_ID: 
     GregorianCalendar date = new GregorianCalendar(); 

     if (mData != null) { 
      date.setTimeInMillis(mData.getDate()); 
     } 

     return new DatePickerDialog(this, datePickerListener, date.get(Calendar.YEAR), date.get(Calendar.MONTH), date.get(Calendar.DAY_OF_MONTH)); 
    } 

    return null; 
} 

private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() { 

    // when dialog box is closed, below method will be called. 
    public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) { 

     GregorianCalendar selectedDate = new GregorianCalendar(); 
     selectedDate.set(Calendar.YEAR, selectedYear); 
     selectedDate.set(Calendar.MONTH, selectedMonth); 
     selectedDate.set(Calendar.DAY_OF_MONTH, selectedDay); 

     mData.setDate(selectedDate.getTimeInMillis()); 

     populateDate(); 
    } 
}; 

위대한 작품입니다. 그러나 사용자가 제출 버튼을 클릭하면 오늘 날짜로 다시 설정하려고합니다. mData 객체의 Date 변수를 오늘으로 쉽게 설정할 수 있습니다. 그러나 DatePickerDialog를 업데이트하는 방법을 모르겠습니다. 이미 만들어져 있으므로 TextView를 클릭해도 다시 onCreateDialog가 실행되지 않습니다. 그래서 TextView를 클릭하면 DatePickerDialog가 열리고 내가 선택한 마지막 날짜입니다.

날짜를 업데이트하려면 DatePickerDialog를 어떻게 참조해야합니까? DatePickerDialog를 종료해도 문제가 없습니다.

+0

사용자가 텍스트보기를 클릭 할 때마다 새 datapickerdialog 인스턴스를 실행하지 않는 이유는 무엇입니까? 이런 식으로 createDialog가 항상 호출됩니다. 맞습니까? – kinghomer

+0

어떻게? 나는 단순히 시스템 메소드 인'showDialog (MY_ID);를 호출하고있다. – Andrew

+0

활동 코드를 게시 할 수 있습니까? 그래서 각 부분에서 다이얼로그를 어디에서 어떻게 호출하는지 알 수 있습니다. – kinghomer

답변

0

나는 받아 들일만한 해결책을 발견했다.

날짜를 다시 설정하면 removeDialog(DATE_DIALOG_ID);으로 전화하여 대화 상자를 파괴해야합니다. 다음 번에 showDialog(DATE_DIALOG_ID);이 호출되면 다시 생성됩니다.

관련 문제