将包含ID的String转换为Integer-ID

时间:2011-11-07 14:42:48

标签: android string

我有一个简短的问题:

如何转换包含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。

谢谢!

6 个答案:

答案 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)

答案 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这样的整数。