猿问

如何获得具有已知资源名称的资源ID?

如何获得具有已知资源名称的资源ID?

我想访问一个资源,比如一个字符串,或者一个可以按名称绘制的资源,而不是它的int id。

我该用哪种方法?



慕姐4208626
浏览 545回答 3
3回答

FFIVE

它将类似于:R.drawable.resourcename确保你没有Android.R导入的名称空间,因为它可能会混淆Eclipse(如果您正在使用该名称空间)。如果这不起作用,您可以始终使用上下文的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)它返回指定资源名称、类型和包的整数。

12345678_0001

如果我理解得对,这就是你想要的int drawableResourceId = this.getResources().getIdentifier("nameOfDrawable", "drawable", this.getPackageName());在哪里“这”是一种活动,写出来只是为了澄清。如果您想要string s.xml中的字符串或UI元素的标识符,请用“Drak”替换int resourceId = this.getResources().getIdentifier("nameOfResource", "id", this.getPackageName());我警告您,这种获取标识符的方法非常慢,只在需要的地方使用。链接到正式文件:Resources.getIdfier(StringName,StringDefType,StringDefPackage)

繁花不似锦

从字符串获取资源ID的简单方法。在这里,ResourceName是可绘制文件夹中资源ImageView的名称,它也包含在XML文件中。int resID = getResources().getIdentifier(resourceName, "id", getPackageName());ImageView im = (ImageView) findViewById(resID);Context context = im.getContext();int id = context.getResources().getIdentifier(resourceName, "drawable",context.getPackageName());im.setImageResource(id);
随时随地看视频慕课网APP

相关分类

Java
Android
我要回答