所以看起来像
int id = ressources.getIdentifier(title, "string", "com.package");
正在返回0
,意味着它找不到指定的资源。后续调用会ressources.getIdentifer()
导致异常,因为0
它不是有效的资源 ID。
以下是一些调试/替代想法:
- 您是否可以访问该库中的任何资源,或者该问题是特定于该资源 (
title
) 还是特定于该类型的资源(字符串)?你能访问另一个图书馆的资源吗?
- 您是否将库作为 jar 文件访问?您可以 jar 代码,但不能从 jar 访问资源。
Android - 是否可以创建一个自定义库以跨多个应用程序使用?
代码
String fullyQualifiedResourceName = "com.package:string/sample";
int id = ressources.getIdentifier(title, null, null);
if (id == 0) {
Log.e(TAG, "Lookup id for resource '"+fullyQualifiedResourceName+"' failed";
// graceful error handling code here
}
代码
final String resourceName= "sample";
final int id;
try {
final Class resourceType = com.package.R.string.class;
final Field field = resourceType.getField(title);
id = field.getInt(null);
} catch (final Exception e) {
Log.e(TAG, "Lookup id for resource '"+resourceName+"' failed";
// graceful error handling code here
}
Android,从字符串中获取资源ID?
http://daniel-codes.blogspot.com/2009/12/dynamically-retrieving-resources-in.html