android从库导入资源项目

是否可以使用应用程序项目中库项目中定义的类似字符串的资源?如果是,怎么做?
因为我似乎无法像这样解析我想要解析的字符串:

String title=“sample”;
int id=ressources.getIdentifier(标题,“字符串”、“com.package”);

给我这个例外

警告/资源类型(278):获取资源号0x00000000的值时没有包标识符
WARN/System.err(278):android.content.res.Resources$NotFoundException:String resource ID#0x0

我要寻找的字符串(“示例”)肯定在库项目的strings.xml中提供的这个包中。我甚至可以在R.java中看到它

看来

int id=ressources.getIdentifier(标题,“字符串”、“com.package”)

正在返回0,表示找不到指定的资源。由于0不是有效的资源id,对resources.getIdentifier()的后续调用会导致异常

以下是一些调试/备选方案:


  • 您可能已经做了十几次了,但这并不妨碍您提及:首先,请重新检查所有内容的拼写:

    • 包拼写正确(在库项目和客户项目中)
    • 资源字符串正确(库项目和客户端项目)
    • uses library元素AndroidManifest.xml中的库拼写是否正确
    • 等等

  • 您是否可以访问该库中的任何资源,或者问题是否特定于该资源(title)或特定于该类型的资源(字符串)?你能访问其他图书馆的资源吗

  • 您是否以jar文件的形式访问库?您可以jar代码,但不能从jar访问资源

Android-是否可以创建一个自定义库来跨多个应用程序使用


  • 您是否尝试了备用名称格式:

代码

String fullyQualifiedResourceName=“com.package:String/sample”;
int id=ressources.getIdentifier(title,null,null);
如果(id==0){
Log.e(标记“资源的查找id'”+fullyQualifiedResourceName+“'failed”);
//这里有优雅的错误处理代码
}

  • 您可以尝试使用反射:

代码

最终字符串resourceName=“sample”;
最终int id;
试一试{
最终类resourceType=com.package.R.string.Class;
最终字段=resourceType.getField(标题);
id=field.getInt(null);
}捕获(最终异常e){
Log.e(标记“资源的查找id'”+resourceName+“'failed”);
//这里有优雅的错误处理代码
}

Android,从字符串中获取资源ID

http://daniel-codes.blogspot.com/2009/12/dynamically-retrieving-resources-in.html

发表评论