我正在开发一个Android应用程序,我有以下代码:
int digit = 0;
imageButton = (ImageView)findViewById(R.id.btn1);
numberedImage = (ImageView)findViewById(R.id.Digit1);
imageButton.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
digit++;
numberedImage.setImageResource(R.drawable.number + ((digit) + 1));
}
});
和一些图像在一个可绘制的文件夹称为number1
, number2
,等等…这段代码本来工作得很好,然后,突然,它不再工作了。
我想要的ImageView
改变图像每次点击,什么让我完全困惑,是这段代码完全正常工作的事实(即使它可能是错误的某种方式,我不是一个程序员),突然之间,它不再…
之后,我也尝试使用数组和循环,但我遇到了同样的错误:
"number无法解析或不是一个字段"
你误会了。但可能是幸运的(或不幸的),你的代码给了你一些成功的结果,你的误解更加坚定。
ImageView.setImageResource
以资源id为参数。不是图像名称。所以当你添加一个数字到资源id它是设置下一个id的图像。由于图像的名称是顺序的,所以id也是顺序的,这就是为什么你得到了成功的结果。但这并不能保证你总能完成。
我猜以前它是工作的,因为在你的资源中有一个名为number的图像。但现在它被删除了。
解决方案
Resources res = getResources();
String mDrawableName = "number" + digit + 1; // be sure those exist
int resID = res.getIdentifier(mDrawableName , "drawable", getPackageName()); numberedImage.setImageResource(resId);
请使用
for(int i=0;i<imageCount;i++){
int imageResId = getResources().getIdentifier("image" + i, "id", YourActivity.this.getPackageName());
numberedImage.setImageResource(imageResId);
}