以下是代码:
String id = "R.drwable.br" + mQuestionNumber;
mSlikaNastavi.setImageDrawable(getDrawable(id));
在getDrawable(id)上找到错误:上下文中的getDrawable(int)不能 应用于(java.lang.String)
mSlikaNstavi
是ImageView
,我想从java更改图片。我不能在R.drawable.br2
中写getDrwable()
,因为每次mQuestionNumber
都不同。
答案 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));