使用特定的字符串变量

时间:2015-09-16 21:02:36

标签: java android android-drawable android-resources

对于标题感到抱歉,描述了我想要做的事情。我总是把这个问题作为一个整体来自Java,但是现在,它专门用于Android。让我们说我正在解析一个API并获得这个特殊字符串,让我们说"clear"。在我的drawable中,我有一个clear.jpg我想以编程方式设置为ImageView。这不是困难的部分。我想知道的是,如果有一个快速的方法,我可以使用变量名称调用.jpg?我知道我可以轻松地制作不同的if语句,例如:

if(string == "clear")
{
    //setImageView to drawable/clear
}

但无论如何我可以做一些事情,比如

//setImageView to drawable/string

字符串是否清晰?我知道它显然会在drawable中寻找一个字符串,但无论如何我能做我所描述的内容吗?我只是一个普遍的问题;这是我一直想知道的事情。

让我知道!谢谢!

5 个答案:

答案 0 :(得分:0)

private void showImage() {
    String uri = "drawable/icon";

    // 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);
}

否则我建议你使用R. *这样的参考文献:

int imageResource = R.drawable.icon;
  Drawable image = getResources().getDrawable(imageResource);

参考 - > Android - Open resource from @drawable String

答案 1 :(得分:0)

据我所知,调用该图片的最快捷方式是

xml文件中的图片名称;例如,如果你想改变背景

的imageview,你可以在下面的代码中输入你的xml文件

机器人:背景= “@绘制/清除”。

请注意,图片必须位于drawable文件夹中。谢谢,我希望这会有所帮助。

答案 2 :(得分:0)

看起来Java 8为局部变量注释提供了limited support,但它的反射API无法让您在方法体内访问。所以你需要解析类文件本身。为此,像ASM这样的库可以解决问题。

答案 3 :(得分:0)

if(string.equals("clear")){
  int resID = getResources().getIdentifier("clear", "drawable", getPackageName());
  imageView.setBackgroundResource(resID);
}

答案 4 :(得分:0)

与使用getIdentifier方法的其他方面相同。

imageView.setImageView(getResources().getIdentifier(string, "drawable", 
            getPackageName()));

但是,通过执行此操作,您可以在不使用if条件块的情况下进行处理,并直接指定string中的值的Drawable(我认为这是您对此问题的意图)。