활동이 없으면 R 클래스를 사용할 수없는 것처럼 보입니다. 라이브러리 내에 테스트 응용 프로그램이 있으면 테스트 응용 프로그램은 R에 액세스 할 수 있지만 lib 자체에는 액세스 할 수 없습니다.
그래도 이름으로 리소스에 액세스 할 수 있습니다. 예를 들어, 내가
public class MyContext extends ContextWrapper {
public MyContext(Context base) {
super(base);
}
public int getResourceId(String resourceName) {
try{
// I only access resources inside the "raw" folder
int resId = getResources().getIdentifier(resourceName, "raw", getPackageName());
return resId;
} catch(Exception e){
Log.e("MyContext","getResourceId: " + resourceName);
e.printStackTrace();
}
return 0;
}
}
이
그리고 라이브러리에있는 개체의 생성자 (자세한 ContextWrappers에 대한 자세한 내용은 https://stackoverflow.com/a/24972256/1765629 참조), 내 라이브러리 내에서 이런 클래스가, 즉 컨텍스트 래퍼 소요
public class MyLibClass {
public MyLibClass(MyContext context) {
int resId = context.getResourceId("a_file_inside_my_lib_res");
}
}
그런 다음, lib 디렉토리를 사용하는 응용 프로그램에서, 나는 상황을 통과해야
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
MyLibClass a = new MyLibClass(new MyContext(this));
}
}
MyContext, MyLibClass 및 a_file_inside_my_lib_res는 모두 라이브러리 프로젝트 내에 있습니다.
도움이되기를 바랍니다.
라이브러리 란 라이브러리 프로젝트 또는 JAR/AAR 파일을 의미합니까? JAR 파일이 아닌 라이브러리 프로젝트 또는 AAR 파일에서만 자원에 액세스 할 수 있습니다. – shkschneider
JAR 파일이 아닌 라이브러리 프로젝트입니다. – sqshemet
공정하기 때문에 신청서를받지 못했습니다. "활동 없음"또는 "컨텍스트"가 있습니까? Android 애플리케이션을 구축하고 있습니까? – shkschneider