我有一个简短的问题:
如何转换包含Drawable的Id的字符串
String idString = "R.drawable.bubblegum";
到整数,
idInt
这样我就可以使用该ID作为图像的引用(在SimpleAdapter中使用)
所以,举个例子,我做不到:
bubble.setImageDrawable(this.getResources().getDrawable(idString));
//not possible, cause idString is a String an not an Id/Int
所以,我有包含id的String,但不幸的是作为String。
谢谢!
答案 0 :(得分:21)
虽然这个问题已经相当陈旧,但你遗漏的是“id”和“drawable”是不同的资源类型。而不是
getResources().getIdentifier(stringId, "id", "my.Package");
它的
getResources().getIdentifier(stringId, "drawable", "my.Package");
您还可以使用activityContext.getPackageName()
/**
* Returns Identifier of String into it's ID as defined in R.java file.
* @param pContext
* @param pString defnied in Strings.xml resource name e.g: action_item_help
* @return
*/
public static int getStringIdentifier(Context pContext, String pString){
return pContext.getResources().getIdentifier(pString, "string", pContext.getPackageName());
}
答案 1 :(得分:13)
通过getIdentifier()
调用Resources
对象上的getResources()
,如这些StackOverflow问题所示:
等。
答案 2 :(得分:3)
您可以尝试以下
int id = getResources().getIdentifier("arr_name"+positionSelected,
"array", rootview.getContext().getPackageName());
我在spinner下拉列表中使用,获取数组字符串跟随父微调器 可以帮到你!
答案 3 :(得分:1)
int idInt = R.drawable.bubblegum;
除非我在这里缺少一些东西。
答案 4 :(得分:0)
如果你的idString
是常数,即它在运行时没有改变,请按照DeeV的回答。
如果更改,您可以查看getIdentifier方法。
答案 5 :(得分:-2)
至少,我无法解决这个问题。似乎没有办法将String“R.id.mytext”转换为可以在findViewById(R.id.myText)中使用的像R.id.mytext这样的整数。