2012-05-25 3 views
0

전 사용자 지정 datetime 선택기 컨트롤을 개발했습니다. 이 사용자 지정 피커 컨트롤은 LinearLayout 클래스에서 상속 받음으로써 개발되었으며 디자인 타임에 속성을 설정하기위한 "선언 스타일 가능한"특성, 동시 이벤트에 대한 인터페이스 집합 및 마지막으로 효과를 재생할 많은 양의 코드 및 날짜 - 시간 비즈니스 로직을 관리합니다.사용자 지정보기에 TimePickerDialog 또는 DatePicker 표시

이제 사용자 정의 컨트롤에 단추를 눌러 DatePickerDialog 및 TimePickerDialog를 표시해야합니다. 나는 안드로이드 지식 기반을 검색했고,이 대화 상자를 보여주기 위해 찾은 유일한 방법은 Developer's DatePicker Guide입니다.

내 컨트롤이 LinearLayout에서 직접 상속되기 때문에 대화 상자를 제공하기 위해 onCreateDialog() 메서드를 재정의 할 수 없습니다. 단순히 LinearLayout이 메서드를 havethis하지 않기 때문입니다! 부모 대화 상자에 대한 참조없이이 대화 상자를 내 사용자 정의 컨트롤에 표시하려면 어떻게해야합니까? 대화 상자를로드하고 실행하는 코드가 내 사용자 정의 컨트롤로 한 번 정의되므로 (자), 각 액티비티로 onCreateDialog()를 관리하는 것에 대해 걱정할 필요없이, 가능한 많은 액티 버티에 대한 컨트롤을 그리는 기회가 생겼습니다. MessageBoxes [MessageBox.Show()가 Form 인스턴스를 필요로하지 않음]을 표시해야하는 경우 간단한 .NET 컨트롤에서 수행합니다. ...

어떻게 구현할 수 있습니까? 미리 감사드립니다 ...

+0

onCreateDialog()에서 수행하려는 작업은 무엇입니까? 왜 버튼에서 직접 함수를 호출하고 대화 상자를 수정 한 다음 대화 상자를 표시해야합니까? – Sam

+0

대화 상자를 표시하려면 onCreateDialog가 필요합니다. 웹상에있는 모든 예제에서 대화 상자를 표시하기 위해 Activity.ShowDialog() 메서드를 호출 한 다음 onCreateDialog() 재정의 된 함수에서 Dialog를 작성하고 반환합니다. 내 컨트롤은 Activity에서 상속하지 않으므로 ShowDialog() 및 OnCreateDialog() 메서드가 없습니다. – GiveEmTheBoot

답변

3

Activity.showDialog(), onCreateDialog() 등을 사용하는 대신; 그냥 Dialog.show()를 사용하십시오. 당신의 버튼의 OnClickListener를 내부

Calendar calendar = Calendar.getInstance(); 
mDialog = new DatePickerDialog(context, onDateSetListener, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); 
mDialog.show(); 

, 당신은 당신이 원하는 어쨌든 mDialog을 수정 한 다음 mDialog.show()를 호출 할 수 있습니다.

+0

나는 이것을 시도 할 것이다;)하지만 ... 웹상에 게시 된 예제에서 모든 대화 상자가 onCreateDialog() 메소드에 의해 초기화되고 제공되는 이유를 이해하지 못하는 이유는 무엇입니까? 그냥 Show() 함수를 호출하는 대신에? 미안하지만 약간의 초심자 메신저 ... 어쨌든 ... 나는 그것을 시도해 볼게! – GiveEmTheBoot

+0

간단한 방법으로 시도했지만 완벽하게 작동합니다.) ... 누군가가 나를 설명 할 수있는 경우 Activity.ShowDialog() 메서드를 호출하여 대화 상자가 표시되는 모든 예제에서 매우 감사하게 생각합니다. – GiveEmTheBoot

+1

우연의 일치는 아니지만 Dialog.show()를 사용하는 예제가 많이 있습니다. Activity.showDialog()는 Dialog.show()가 여전히 최신 상태 인 동안 DialogFragment에 대한 API 11 아래에서도 감가 상각됩니다. 그러나 showDialog()를 사용하면 오리엔테이션 변경 (또는 뷰 무효화) 후에 현재 상태가 유지되지만 Dialog.show()를 사용하는 경우이 기능을 직접 추가해야합니다. – Sam

관련 문제