setImageResource上的编号图像



我正在开发一个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);
}

最新更新