2013-04-30 5 views
0

저는 Android 라이브러리를 개발 중입니다.라이브러리 내부의 정적 함수에서 문자열 지역화 - android

이 라이브러리에는 주로 다양한 오류에 대한 자세한 설명을 위해 문자열이 포함 된 정적 함수가 들어있는 유틸리티 클래스가 있습니다.

이 문자열을 지역화하고 싶습니다. 따라서 라이브러리에서이 문자열을 res/values/strings.xml 안에 넣었습니다.

내 라이브러리 코드에서 이러한 문자열을 사용하려면 getString()으로 전화해야하지만이 방법을 사용하려면 Context이 필요합니다. 문자열은 라이브러리 자원에서만 정의되므로 은 반드시이어야합니다.

내 지금까지

내가 정적 함수 내부 문자열 리소스 사용에 대한 비슷한 질문을 검색 한 연구,하지만 내 경우에는 작동하지 않습니다 주어진 답변. 2 개 개의 인기있는 답변했다 :

  1. 는 정적 함수에 인수로 컨텍스트를 통과 - 나는 유틸리티 클래스를 사용하여 코드 라이브러리를 사용하여 응용 프로그램 (안 라이브러리 때문에이 나를 ​​위해 작동하지 않습니다 생각 그 자체). 즉, 호출자가 전달할 수있는 유일한 컨텍스트는 앱의 컨텍스트 일 ​​것이지만 라이브러리의 컨텍스트가 필요합니다. 나는이 같은 이유로 작동하지 않습니다 생각하는 컨텍스트는 응용 프로그램의 컨텍스트가 아닌 라이브러리의 것 -

  2. (보통 싱글 통해) Application 개체에 액세스하고 getApplicationContext()를 호출하여 정적 컨텍스트를 검색합니다.

아이디어가 있으십니까?

나는 특별한 것을 시도하지 않는다고 생각합니다. 공유 및 코드 재사용을위한 라이브러리를 개발하는 것은 완벽합니다. 이 라이브러리에 정적 유틸리티 함수를 갖는 것은 완전히 정상입니다. 오류 조건을 설명하기 위해이 함수에서 문자열을 사용하는 것은 완전히 정상입니다. 그리고이 문자열을 지역화하려는 것은 정상입니다. 왜 이렇게 어려운가요?!

답변

2

라이브러리 리소스는이를 사용하는 프로젝트에 흡수되므로 앱의 컨텍스트가 괜찮습니다. 그런 식으로 해봤습니까?

라이브러리 프로젝트에서 리소스를 정의 할 때 충돌이 발생하지 않도록 라이브러리 ID로 머리말을 붙입니다. R.string.mylib_astring.

또한 앱에서 R을 통해 리소스를 참조하면 앱의 리소스가 아니라 라이브러리의 패키지에 포함됩니다. 예 : com.example.mylib.R 대신 com.example.myapp.R

+0

사람들이 문자열 ID 사이에 충돌이있는 부분을 보았습니다. 라이브러리 문자열에 고유 한 ID를 사용하는 한 모두 확인해야합니다. – talkol

관련 문제