为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕姐4208626 2019-06-12 15:20:26
如何获得具有已知资源名称的资源ID?我想访问一个资源,比如一个字符串,或者一个可以按名称绘制的资源,而不是它的int id。我该用哪种方法?
查看完整描述

3 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

它将类似于:

R.drawable.resourcename

确保你没有Android.R导入的名称空间,因为它可能会混淆Eclipse(如果您正在使用该名称空间)。

如果这不起作用,您可以始终使用上下文的getResources方法.。

Drawable resImg = this.context.getResources().getDrawable(R.drawable.resource);

哪里this.context不受重视ActivityService或任何其他Context子类。

最新情况:

如果是你想要的名字,Resources类(由getResources())有一个getResourceName(int)方法,以及getResourceTypeName(int)?

更新2:

这个Resources类具有以下方法:

public int getIdentifier (String name, String defType, String defPackage)

它返回指定资源名称、类型和包的整数。


查看完整回答
反对 回复 2019-06-12
?
12345678_0001

TA贡献1802条经验 获得超5个赞

如果我理解得对,这就是你想要的

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)


查看完整回答
反对 回复 2019-06-12
?
繁花不似锦

TA贡献1851条经验 获得超4个赞


从字符串获取资源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);


查看完整回答
反对 回复 2019-06-12
  • 3 回答
  • 0 关注
  • 544 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信