Context中的getDrawable(int)不能应用于(java.lang.String)

时间:2018-06-18 07:55:28

标签: java android

以下是代码:

String id = "R.drwable.br" + mQuestionNumber;
mSlikaNastavi.setImageDrawable(getDrawable(id));
  在getDrawable(id)上找到

错误:上下文中的getDrawable(int)不能   应用于(java.lang.String)

mSlikaNstaviImageView,我想从java更改图片。我不能在R.drawable.br2中写getDrwable(),因为每次mQuestionNumber都不同。

3 个答案:

答案 0 :(得分:1)

可绘制的ID必须是int而不是String。您可以使用int

获取相对getIdentifier() ID

而不是

mSlikaNastavi.setImageDrawable(getDrawable(id))

使用

String id = "br" + mQuestionNumber;
mSlikaNastavi.setImageDrawable(getDrawable(getResources().getIdentifier(id, "drawable", getPackageName())));`

答案 1 :(得分:1)

我猜你有像br1,br2,br3这样的可绘制内容......你认为通过连接R.drawable.br和mQuestionNumber可以获得drawable的id,但事实并非如此。

这样做:

int id = getResources().getIdentifier("br" + mQuestionNumber, "drawable", getPackageName());
mSlikaNastavi.setImageDrawable(getDrawable(id));

答案 2 :(得分:0)

在这里,您需要通过传递自己的id值来提取Drawable Id,而不是R.java中存在的ID

因此,使用getIdentifier方法时,需要提供可绘制的名称,在您的案例中为“drawable”的资源类型,以及Android将从中搜索drawable的packageName。

    int drawableId = getResources().getIdentifier("br" + mQuestionNumber,"drawable",getPackageName());

找到id后,使用它在imageView中使用setImageDrawable()显示它,并且需要Drawable使用getDrawable()传入ID从其iD获取Drawabel。

    mSlikaNastavi.setImageDrawable(getResources().getDrawable(drawableId));

所以代码是:

    int drawableId = getResources().getIdentifier("br" + mQuestionNumber,"drawable",getPackageName());
    mSlikaNastavi.setImageDrawable(getResources().getDrawable(drawableId));