2011-02-10 6 views
8

안녕하세요! (여기에 긴 게시물 사과)Android 라이브러리 프로젝트 - 클래스 정의

나는 본질적으로 동일한 코드를 기반으로 몇 가지 응용 프로그램을 쓰고 있습니다.

각 응용 프로그램에는 그 차이점이 있으며, 일부는 새로운 활동을 갖게되며, 모두 다른 자원이 할당됩니다.

모든 공통 코드를 한 곳에서 배치 할 수 있도록 Android 라이브러리 프로젝트를 사용하려고하고 있으므로 변경 사항을 한 번만 작성하면 모든 프로젝트가 업데이트됩니다.

기본 응용 프로그램에서 각 리소스를 정의 할 수 있으므로 리소스가 쉬운 솔루션입니다. 이름 지정 규칙이 동일하게 유지되는 한 이러한 리소스는 라이브러리 프로젝트의 리소스를 재정의합니다.

자, 내 질문은 어떻게 동일한 작업을 수행합니까? 예를 들어, 모든보기에서 공통 코드에 대한 래퍼로 기본보기가 있습니다. 이것에서 나는 다양한 활동을 시작했다. 세 가지 응용 프로그램 모두 다른 UI 및 기능을 포함 할 때 다른 활동을 시작해야하는 경우 어떻게해야합니까? 나는 이것에 대해 어떻게 갈 것인가? 라이브러리 프로젝트는 주 프로젝트가 이미 컴파일 된 것처럼 다른 활동을 사용하기를 원한다는 것을 결코 알 수 없습니다.

나는 두 가지 해결책을 생각해 봤지만 누군가 다른 아이디어가 있는지 알고 싶습니까? 그것은 여기에 어떤 피드백을 위해 큰 도움이 될 것입니다 :

  1. 출시에서 주요 응용 프로그램에 정의 될 클래스에 대한 참조를로드 할 수있는 상점을 발사 할 수있는 라이브러리 프로젝트의 활동, . 이것은 도서관 프로젝트가이 활동을 호출 할 때 말한 내용을로드 할 수 있습니다.

  2. 라이브러리 프로젝트 활동 내에서 변경되지 않는 모든 기능을 그대로 둡니다. 그런 다음이 활동을 확장하고 onCreate를 재정 의하여 여기에 필요한 것을 수행합니다 (예 : 다른 레이아웃로드,보기 설정 등). 이제는 라이브러리 프로젝트가 아니라 기본 응용 프로그램에서 대부분의 진입 점을 정의해야하기 때문에 이러한 단점이 있습니다.

내 문제는 여기에 있습니다. 이 문제에 대해 내가 잘못 설명했는지 물어보십시오.

감사합니다,

아담

+0

해결책을 찾은 것 같습니다. Intents에 반사 및 메서드 setClassName 메서드를 사용하면 라이브러리 프로젝트에서 Class 인스턴스를 사용할 필요가 없습니다. 메인 애플리케이션은 이제이 클래스들을 정의 할 수 있으며, 라이브러리 프로젝트는이를 호출 할 수 있습니다. 지금까지 일하는 것 같아요! – Mimminito

+2

같은 문제가 발생했습니다. 내 문제도 해결할 것이라고 생각하면서 반성 코드를 올려 주시겠습니까? –

답변

0

또는 더 간단 : 당신은 유연성의 종류를 달성하기 위해 상속 또는 구성을 사용해야합니까?

이런 종류의 구조 탐구도있었습니다. 대개 적용 가능한 패턴 &을 더 작은 조각으로 나누어서 해결할 수 있습니다. 나는. 그 차이가보기라는 것을 알고 있다면 공통된 인터페이스에 대해 구현할 일부 고유 클래스로 추출하고 기본 활동의 인터페이스를 참조하십시오.당신을 위해

일부 링크 :

적어도 나는 당신의 질문을 이해하는 방법과, 이것은 더있다 OOP 디자인 질문.

관련 문제