如何替换R.drawable。“someString”

我的项目中有一些图像。 图像的名称存储在一个字符串中,我想setImageResource(R.drawable。“…..”); 使用图像名称的字符串,但问题是这不起作用。

我怎样才能做到这一点?

Solutions Collecting From Web of "如何替换R.drawable。“someString”"

这不是一个正确的语法,你必须得到编译时错误,在改变图像资源之前你必须知道,所有资源都提供了一个id,这些id存储在R.java文件中。 Ids存储为整数格式,在您的应用程序中,您可以通过这些ID而不是名称来获取所有这些资源,因此您需要首先获取资源ID,方法是:

String mDrawableName = "myimg"; int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName()); 

然后使用此resID。

使用

 getResources().getIdentifier("NAME_OF_IMAGE", "drawable", context.getPackageName()) 

看到这个post 。 它应该对你有所帮助。 基本上你需要获取标识符,然后使用setImageResource加载。

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

name – 图像的名称
defType – 它可以为你的情况绘制
defPackage – 你的应用程序的默认包(我想你可以在活动上使用getPackage())

尝试这个

  String uri = "NAME"; // int imageResource = R.drawable.icon; int imageResource = getResources().getIdentifier(uri, null, getPackageName()); ImageView imageView = (ImageView) findViewById(R.id.myImageView); Drawable image = getResources().getDrawable(imageResource); imageView.setImageDrawable(image); 

通过将图像从’drawable’移动到’raw’文件夹并访问字符串值,我得到了它的工作原理。 如果’res’目录下没有’raw’文件夹,右键单击res-> new-> Android资源目录,在resourcetype下拉列表中选择’raw’。

  String avatar = ("android.resource://" + "yourPackageName/" + String.valueOf(R.raw.robot_blue));