如何获取具有已知资源名称的资源 ID?
2022-08-31 06:17:23
我想通过名称而不是int id访问像String或Drawable这样的资源。
我将使用哪种方法?
我想通过名称而不是int id访问像String或Drawable这样的资源。
我将使用哪种方法?
如果我理解正确,这就是你想要的
int drawableResourceId = this.getResources().getIdentifier("nameOfDrawable", "drawable", this.getPackageName());
其中“这”是一个活动,只是为了澄清而写的。
如果你想要字符串中的字符串.xml或UI元素的标识符,请替换“可绘制”
int resourceId = this.getResources().getIdentifier("nameOfResource", "id", this.getPackageName());
我警告你,这种获取标识符的方式真的很慢,只在需要的地方使用。
链接到官方文档:Resources.getIdentifier(String name, String defType, String defPackage)
它将是这样的:
R.drawable.resourcename
确保你没有导入命名空间,因为它可能会混淆Eclipse(如果这是你正在使用的)。Android.R
如果这不起作用,您可以随时使用上下文的方法...getResources
Drawable resImg = this.context.getResources().getDrawable(R.drawable.resource);
其中 初始化为 或任何其他子类。this.context
Activity
Service
Context
更新:
如果它是你想要的名称,则类(由 返回)有一个方法和一个 ?Resources
getResources()
getResourceName(int)
getResourceTypeName(int)
更新 2:
该类具有以下方法:Resources
public int getIdentifier (String name, String defType, String defPackage)
它返回指定资源名称,类型和包的整数。