2011-12-19 6 views
2

내 목적 :안드로이드 응용 프로그램 이름 문제

  1. 내 주요 응용 프로그램에 라이브러리 응용 프로그램과 같은 오픈 소스 todoapplication를 통합 할 수 있습니다.

단계는 내가 완료 :

  1. 는면 IsLibrary 기능을 클릭하여 라이브러리 프로젝트와 스크립트는 TodoApp을 구성.
  2. 내 주요 프로젝트에 라이브러리를 추가했습니다.
  3. 라이브러리 프로젝트의 모든 액티비티를 내 안드로이드 매니페스트 파일에 전체 패키지 이름과 함께 this link에 추가했습니다.

문제에 직면 :

내가 런타임 오류를 얻고 거기에는 comilation 오류가없는 라이브러리 프로젝트가 완벽하게 통합되어 있습니다.

근본 원인 :

내가 로그 캣을 분석 할 때, 내가 응용 프로그램 이름이 충돌로 인해 이해합니다. 내 메인 앱의 매니페스트 파일에 'wish'라는 애플리케이션 이름이 있습니다. 이 줄이 때문에 주요 매니페스트에 시간 예외를 실행 던졌습니다

m_app = (TodoApplication) getapplication(); 

: 매니페스트 파일의 라이브러리 프로젝트는 다음과 같이 코드의 라인이 "Todoapplication"자바 파일에서

같은 이름을 가지고 파일에는 name 매개 변수에 Todoapplication이 없습니다.

아무도 도와 줄 수 있습니까? 감사.

답변

4

라이브러리 프로젝트에 사용자 정의 Application 클래스가있는 경우 정의 할 때 해당 사용자 정의 응용 프로그램 클래스에서 상속해야합니다. 따라서 WishApplication extends Application 대신 WishApplication extends ToDoApplication이 필요합니다.

사용자 지정 Application을 사용하는 것은 종종 무의미합니다. 정적 데이터 멤버와 동일한 유효 범위를 가지며 하나만Application 개체 만있을 수 있습니다. 따라서 호스트 응용 프로그램이 사용자 지정 Application 클래스를 사용하도록 요구하는 라이브러리 두 개를 가질 수 없으므로 라이브러리에서 사용자 지정 Application 클래스를 사용하지 않는 것이 좋습니다. 그리고 여러분 자신의 코드를 위해서 보통의 정적 데이터 멤버보다 명백하게 우월한 경우에만 사용자 정의 Application 클래스를 사용하십시오.

+0

안녕하세요 CommonsWare - 귀하의 제안은 매력처럼 작동했습니다. 귀하의 제안과 도움에 감사드립니다. – Harry

관련 문제