2014-06-16 2 views
1

나는 2 개의 프로젝트를 만들었습니다. 1은 Lib이고 2 번째는 Test입니다. Lib 프로젝트는 일부 데이터를 저장해야하며 공유 환경 설정 (다른 옵션 없음)이어야합니다. lib 프로젝트는 jar 파일이므로 컨텍스트가 없습니다.Android 라이브러리 프로젝트에서 응용 프로그램의 컨텍스트를 얻으시겠습니까?

내 이해에 따라 컨텍스트와 관련이 있습니다. Accessing SharedPreferences through static methods

그래서 Lib 프로젝트 내부에서 응용 프로그램을 확장하는 클래스를 만들었습니다. 이것은 싱글 톤 클래스입니다. 나는

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:name="com.test.manager.LibApp" > 
</application> 

가 그럼 난 내 실제 프로젝트 (TestApp가)에 lib 디렉토리로이 전체 프로젝트를 추가 파일 mainifiest 해방 App에서 아래 선언합니다. 내가 널 포인터 예외를 받고 실행하려고하면.

+0

컨텍스트를 가져 오는 컨텍스트가 필요한 클래스에 대해 생성자를 사용할 수 없습니까? – tyczj

+1

컨텍스트가 필요한 JAR API에 응용 프로그램의 컨텍스트를 전달하십시오. – bstar55

+0

@ bstar55 : 나는 같지만 실현 불가능한 해결책이라고 생각했습니다. – morya

답변

2

문제는 Lib 매니페스트 파일에 응용 프로그램이 존재 함을 선언한다는 것입니다.이 파일은 완전히 무시됩니다. 이동해야합니다 :

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:name="com.test.manager.LibApp" > 
</application> 

testApp 매니페스트에 입력해야합니다.

간단히 말해서 Context는 JAR 파일에서 생성 할 수 없으므로 라이브러리를 사용하는 응용 프로그램에서 가져와야합니다. 즉, 앱의 컨텍스트를 필요한 JAR API에 전달해야하거나 위에서 말한 것처럼 포함하는 애플리케이션의 매니페스트에서 JAR에 정의 된 애플리케이션/액티비티를 선언해야합니다. android library project and Activities

당신이 여기에 실행 라이브러리의 한계를 지적한다 : 여기

은 관련 게시물에 대한 링크입니다.

+0

답장을 보내 주셔서 감사합니다. 첫 번째 방법은 저에게 달려 있습니다 .. – morya

+0

@ user3088564 듣기 좋다! – bstar55

+0

나는 이것에 대해 하나 더 질문을한다. 응용 프로그램을 확장하는 jar 파일과 app 파일에서 두 개의 클래스를 가질 수 있습니까? – morya

관련 문제