0

내 Android 프로젝트에서 이미 사용자 정의 대화 상자를 만들었습니다. SelectColorDialog이라는 클래스가 확장되어 Dialog으로 확장되었으므로 사용자는 특정 색상을 선택하기 위해 큰 색상의 행렬을 볼 수 있습니다. 대화 상자는 선택한 색상 값 (Integer 등)을 콜백 기능을 통해 대화 개시 프로그램 (일반적으로 액티비티)에 반환합니다.기존 대화 상자를 기반으로 사용자 지정 DialogPreference를 만들 수 있습니까?

쉬운 사용자 지정 글꼴을 허용하기 위해 유사한 사용자 지정 대화 상자 SelectTypefaceDialog이 있습니다. 사용 가능한 서체 목록이 ListView 행으로 표시되며 각 행은 이름과 해당 서체에 렌더링 된 연관된 간단한 샘플 텍스트로 식별됩니다. 사용 가능한 글꼴에는 NORMAL, MONOSPACE 등과 같은 일반적인 droid 글꼴과 SDCard의 특정 하위 디렉토리에로드 할 수있는 외부 소스 TTF 글꼴 파일이 포함됩니다.

이러한 사용자 지정 대화 상자는 SharedPreferences, 환경 설정 정의 XML 파일 또는 모든 PreferenceActivity와 함께 직접 사용하도록 설계되지 않았습니다. 대신 각 대화 상자는 사용자가 버튼을 누르거나 메뉴 항목을 통해 모든 활동에서 팝업 될 수 있습니다. 이러한 대화 상자를 만드는 활동 클래스에는 내부 콜백 클래스 인 선택 이벤트 리스너가있어 사용자가 색상이나 글꼴을 선택할 때이를 감지합니다.

이 두 대화 상자에는 확인 및 취소 버튼이 없습니다. 대화 상자에서 해당 색상이나 활자체 값 (암시 적 OK)을 선택하거나 장치의 뒤로 버튼을 눌러 작업을 수행하지 않고 대화 상자를 닫습니다 (암시 적 취소). .

이 두 가지 사용자 지정 대화 상자를 preferences.XML 및 연결된 PreferenceActivity을 통해 공유 기본 설정 프레임 워크에 통합하고자합니다.

가능한 경우 기존 대화 상자에 두 개의 하위 클래스를 기본으로 두는 것을 선호하지만 그렇게하는 방법은 알 수 없습니다. 내가 할 수 없다고 생각하고, 다시 시작해야하고, 현재 사용자 정의 대화 상자 클래스에있는 모든 Java 코드 (색상 또는 글꼴 표시 및 선택)를 직접 사용자 정의 DialogPreference 클래스에 복사하거나 적용해야합니다. , 아마도 onCreateDialogView() 및/또는 다른 방법을 무시함으로써?

답변

1

이 질문은 조금 오래되었을 수도 있지만 앞으로도 같은 문제를 보면서 도움을 주길 바랍니다. 단지 DialogPreference 대신 기본 설정을 확장하십시오. DialogPreference는 잘못 설계되어 있으며 사용자 정의 Dialog를 사용하는 "공식적인"방법입니다.이 단일 메서드에는 클래스 논리의 절반이 포함되어 있으므로 protected showDialog 메서드를 재정의 할 수 없습니다.

관련 문제